最近有一个项目要用webservice开发,听说Axis2不错,所以就去apache下载下来,因为第一次用,不熟悉,只好去网上搜搜文章,发觉网上这方面的介绍很少,要不就是讲的太简单了,不好上手,只好去看Axis2自带的文档。经过几天的学习,调通了一个实例。就和大家一块探讨学习!
一、环境:
1. jdk1.5 + Tomcat5.5 + Axis2_1.1.1
2. 好像jdk要1.4以上,tomcat要4.0以上。
二、准备工作:
1.下载Axis2,去http://ws.apache.org/axis2/下载Standard Binary Distribution、WAR Distribution。
2. 把Standard Binary Distribution解压,如:$AXIS2_HOME$ = D:\axis2-1.1.1。
3. 把WAR Distribution 解压到 $tomcat_home$\webapps\axis2下(注意:这里的axis2文件夹需要你手动添加),或者你也可以参照axis2文档的步骤用ant 创建一个axis2.war ,放到$tomcat_home$\webapps下,然后启动tomcat ,那么tomcat会在webapps下自动创建一个axis2文件夹。
4. 设置环境变量:建立JAVA_HOME和AXIS2_HOME,添加你的jdk和axis2的存放地址,同时把他们的bin添加到path。这样做主要是方便下来生成wsdl文件。
5. 你可能还有把$tomcat_home$\webapps\axis2\WEB-INF\lib下的这些*.jar包添加到环境变量的classpath 。当然如果你使用IDEA的话可能就不用了。
三、测试:
1. 启动tomcat 打开浏览器,输入:http://localhost:[port]/axis2/ 应该可以进入axis2的欢迎界面了。点击“Validate”如果没有报错,应该说环境已经搭建好了!!
2. 点击“Administration”初始用户名和密码分别是:admin 和 axis2,当然你也可以到$tomcat_home$\webapps\axis2\WEB-INF\conf\axis2.xml下通过修改用户名和密码。
四、一个简单实例
1. 用的实例是$AXIS2_HOME$\samples\quickstartaxiom 下的文件,这里有一个service :StockQuoteService.java,client:AXIOMClient.java 两个java文件。
2. 编译StockQuoteService.java 文件。我用的IDEA 是intelliJ。所以编译完后class文件在$tomcat_home$\webapps\axis2\WEB-INF\classes\[package]. StockQuoteService.class ,这里package 我就不多说了。
3. 生成wsdl文件。这里用axis2自带的java2wsdl.bat 来生成wsdl文件:进入dos 命令提示符到$tomcat_home$\webapps\axis2\WEB-INF\classes 下,输入:
java2wsdl –cp . -cn [package].StockQuoteService –of ..\wsdl\StockQuoteService.wsdl
-cn 后是指定的类,-of 是把文件输出到指定的位置。这里我在$tomcat_home$\webapps\axis2\WEB-INF 下创建了wsdl文件夹存放wsdl文件。
4. 下面可以打包了,axis2中的service包是以后缀.aar 命名的。一种你可以使用命令:ant generate.service(我没用过)。还有一种就是从网上下载插件,因为我用的intelliJ,下载后解压到安装文件目录plugins下。通过插件来打包,不管怎样;打包完后应该是有如下的结构:
StockQuoteService.aar
- services.xml
- StockQuoteService.wsdl
- StockQuoteService.class
注意:package应该和META-INF在同一目录。
5. 上传服务。两种方法:一,直接把StockQuoteService.aar 文件拷贝到$tomcat_home$\webapps\axis2\WEB-INF\services 下,重新启动tomcat,打开浏览器,输入:http://localhost:[port]/axis2/ 进入管理界面,在左侧栏目中点击:“Available Services”可以看到服务已经上传了。二,在管理界面左侧栏目中,点击“Upload Service”上传也可以。
6. 在浏览器中输入:http://localhost:[port]/axis2/services/StockQuoteService?wsdl 如果没错,ok 再输入:http://localhost:[port]/axis2/services/StockQuoteService?xsd 还没错
那说明服务已经布置好了。
7. 测验一下,AXIOMClient.java 编译成class文件执行一下,得到结果:Current price of WSO: 42 好了,服务调用完成。
注意:在AXIOMClient.java 文件中注意端口port:
private static EndpointReference targetEPR =
new EndpointReference(
"http://localhost:[port]/axis2/services/StockQuoteService");
至于其他的如:传输机制等你也自己看的懂,不多说了。
请多指教!!!!
继续学习中 -- yxxiao0929
我的Email:
[email protected]