无题

拿个学位是骗自己的。学问是一辈子的。

统计

留言簿(3)

阅读排行榜

评论排行榜

如何使用Eclipse开发Axis应用并部署到Tomcat

这是我继《如何在Tomcat上安装配置Axis》之后的第二篇技术备忘,与大家分享。所涉及的所有软件仍然都是开源软件(开源传万世,因有我参与!)。本篇假设《如何在Tomcat上安装配置Axis》中描述的所有步骤你都已完成。

首先,列出在《如何在Tomcat上安装配置Axis》所用软件基础之上还需要用到的软件:
1.Eclipse SDK:eclipse-SDK-3.2-win32.zip
2.Eclipse SDK 语言插件:NLpack1-eclipse-SDK-3.2-win32.zip
版本问题仍然需要关注,最好与上述一致,下面我们从安装配置Eclipse开始:

一. 安装配置Eclipse
将eclipse-SDK-3.2-win32.zip解压,拷贝其下的eclipse文件夹到任何你所希望的安装路径,例如:D:\Eclipse。好了,现在已经可以通过运行D:\Eclipse\eclipse下的eclipse.exe启动Eclipse了,但是如果还想安装语言插件汉化它的话,现在最好先别启动。先安装语言插件,采用link方式,解压NLpack1-eclipse-SDK-3.2-win32.zip,在D:\Eclipse\eclipse下新建两个文件夹例如:links和Language Pack,将解压得到的NLpack1-eclipse-SDK-3.2-win32文件夹拷贝到Language Pack文件夹中,并在links文件夹下新建一个文本文件,例如命名为:language pack.link,在文件中加入一行:path=D:\\Eclipse\\eclipse\\Language Pack\\NLpack1-eclipse-SDK-3.2-win32并保存,注意分隔符是两个\。现在再启动Eclipse,可以看到它已经被汉化了(如果还没有被汉化,不要紧,可以先关闭它,然后带参数-clean再启动试试,目的达到后,以后启动就不要带这参数了,否则影响启动速度)。

二. 在Eclipse中创建Axis应用
启动Eclipse,选择工作空间路径(例如D:\My_Eclipse_WorkSpace),从欢迎界面转至工作台,必要的话,先通过窗口——首选项——Java中的编译器和已安装的JRE两个设置,将编译器一致性级别和JDK安装路径设置好(当然也可以设置JRE安装路径,不过这样在编写Java代码时Eclipse的提示信息无法链接到类库源码,似乎不太方便)。
接下来,选择Java透视图,新建一个Java项目,例如项目名为MoneyManage。鼠标右键单击包资源管理器中的项目名MoneyManage,新建一个文件夹,命名为lib,选中lib文件夹,右键单击,选择导入命令,选择常规下的文件系统作为导入源,单击下一步浏览我们先前建好的C:\Tomcat5.0\webapps\axis\WEB-INF\lib目录,勾选其中的所有jar文件,单击完成。右击项目名MoneyManage,选择属性——Java构建路径——库,点击添加Jar按钮,选中刚才导入到lib文件夹下的所有Jar文件,点击确定将它们都加入项目构建路径。这样就将所有我们开发可能涉及到的库都导入了项目。
紧接着我们就可以在项目MoneyManage下新建一个包(例如也叫MoneyManage)在其中实现一些类来提供WS的方法了。
例如,这里我们实现了4个类Action、Admin、MoneyManage和moneyClient。

三. 将应用部署到Tomcat发布为WS
例如,我们希望将moneyClient中的所有可访问(public)方法作为WS发布。
在项目中新建一XML文件,命名为server-config.wsdd,内容如下:

 1 <? xml version="1.0" encoding="UTF-8" ?>
 2 < deployment  xmlns ="http://xml.apache.org/axis/wsdd/"
 3  xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java" >
 4   < globalConfiguration >
 5    < parameter  name ="adminPassword"  value ="admin"   />
 6    < parameter  name ="attachments.implementation"
 7    value ="org.apache.axis.attachments.AttachmentsImpl"   />
 8    < parameter  name ="sendXsiTypes"  value ="true"   />
 9    < parameter  name ="sendMultiRefs"  value ="true"   />
10    < parameter  name ="sendXMLDeclaration"  value ="true"   />
11    < parameter  name ="axis.sendMinimizedElements"  value ="true"   />
12    < requestFlow >
13     < handler  type ="java:org.apache.axis.handlers.JWSHandler" >
14      < parameter  name ="scope"  value ="session"   />
15     </ handler >
16     < handler  type ="java:org.apache.axis.handlers.JWSHandler" >
17      < parameter  name ="scope"  value ="request"   />
18      < parameter  name ="extension"  value =".jwr"   />
19     </ handler >
20    </ requestFlow >
21   </ globalConfiguration >
22   < handler  name ="LocalResponder"
23   type ="java:org.apache.axis.transport.local.LocalResponder"   />
24   < handler  name ="URLMapper"
25   type ="java:org.apache.axis.handlers.http.URLMapper"   />
26   < handler  name ="Authenticate"
27   type ="java:org.apache.axis.handlers.SimpleAuthenticationHandler"   />
28   <!--  服务名  -->
29   < service  name ="moneyClient"  provider ="java:RPC" >
30    <!--  服务类名  -->
31    < parameter  name ="className"  value ="MoneyManage.moneyClient"   />
32    <!--  允许访问所有方法  -->
33    < parameter  name ="allowedMethods"  value ="*"   />
34   </ service >
35   < transport  name ="http" >
36    < requestFlow >
37     < handler  type ="URLMapper"   />
38     < handler
39      type ="java:org.apache.axis.handlers.http.HTTPAuthHandler"   />
40    </ requestFlow >
41   </ transport >
42   < transport  name ="local" >
43    < responseFlow >
44     < handler  type ="LocalResponder"   />
45    </ responseFlow >
46   </ transport >
47 </ deployment >
48


注意以上文件中的service标签,就代表了一个WS服务,服务名为moneyClient;第一个parameter子标签,其value属性为待发布成服务的方法所在的类名;第二个parameter子标签表明将类的所有方法发布,允许服务调用者访问第一个parameter子标签指出类的所有可访问方法。
将编写好的server-config.wsdd文件拷入C:\Tomcat5.0\webapps\axis\WEB-INF目录,并将所有4个类都编译为class文件后按包结构(可以在D:\My_Eclipse_WorkSpace\MoneyManage\bin下找到现成的)拷入C:\Tomcat5.0\webapps\axis\WEB-INF\classes目录。
注意,凡是开发中用到的额外第三方jar库文件,除了在项目构建路径中添加外,也要在C:\Tomcat5.0\webapps\axis\WEB-INF\lib下添加,也要在C:\Tomcat5.0\common\lib下添加。
还算简单,部署完成。

四. 测试发布的WS
可以测试了,看看我们是否发布成功。
启动Tomcat服务,如果服务已启动,则先关闭它,并重新启动。
通过浏览器访问http://localhost:8080/axis/services/moneyClient?wsdl,如果看到显示出wsdl文件,则表明WS服务发布成功。
进而,我们还可以通过具体编程来测试调用服务的某些方法。例如,下面这个类AccessTest就调用了我们发布的moneyClient服务中的getStatus方法来查看用户名为admin密码为change的帐户的状态是否可用。

 1 package  MoneyManage;
 2
 3 import  javax.xml.namespace.QName;
 4
 5 import  org.apache.axis.client.Call;
 6 import  org.apache.axis.client.Service;
 7
 8 public   class  AccessTest  {
 9      public   void  Access()  {
10          try   {
11             String endPoint  =   " http://localhost:8080/axis/services/moneyClient?wsdl " ;
12             Service service  =   new  Service();
13             Call call  =  (Call) service.createCall();
14             call.setTargetEndpointAddress(endPoint);
15             
16             call.setOperationName( new  QName( " moneyClient " " getStatus " ));
17             String result  =  (String) call.invoke( new  Object[]  " admin " ,
18                      " change "  }
);
19             System.out.println(result);
20             
21         }
  catch  (Exception e)  {
22             e.printStackTrace();
23             System.out.println( " access error! " );
24         }

25     }

26
27      public   static   void  main(String args[])  {
28         AccessTest at  =   new  AccessTest();
29         at.Access();
30     }

31
32 }


我们也可以通过一些工具来对服务进行测试与调用,例如王咏刚编写的wsCaller 1.0。

我这样利用Axis和Tomcat发布服务的方法是简单的,因而,服务在可靠性、安全性和客户容量等等方面都是脆弱的,如果要保证这些特性,还必须进一步深入对Axis和Tomcat进行更深层次的应用研究。似乎把应用服务器从Tomcat换为JBOSS会更好?

posted on 2006-12-17 08:43 阅读(3457) 评论(4)  编辑  收藏 所属分类: Web Service

评论

# re: 如何使用Eclipse开发Axis应用并部署到Tomcat 2007-07-27 15:41 wxlbxp

写得很好啊!请问一下你在文中提到的四个类Action、Admin、MoneyManage和moneyClient代码在哪里啊?我是新手想参考一下啊!谢谢!  回复  更多评论   

# re: 如何使用Eclipse开发Axis应用并部署到Tomcat[未登录] 2008-05-14 10:53 haha

请问一下你在文中提到的四个类Action、Admin、MoneyManage和moneyClient代码在哪里啊?我是新手想参考一下啊!谢谢!  回复  更多评论   

# re: 如何使用Eclipse开发Axis应用并部署到Tomcat[未登录] 2008-05-14 10:56 haha

希望您能回复我,我的邮箱:jyli2007@yahoo.cn 也希望能和您交流,我的QQ:10052589 MSN:jyli2008@hotmail.com 谢谢您!  回复  更多评论   

# re: 如何使用Eclipse开发Axis应用并部署到Tomcat 2008-05-14 12:52 fenghao

@haha
这4个类是我举的例子,这4个类里面是不会包含任何与Axis相关的东西的,你用你自己的类的代码相应地修改就可以了。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: