1、关于官方包的说明
二进制包包含了示例程序和一些jar包;war包是可以作为web应用部署到servlet container中的axis2服务包,它是apache axis2提供的服务管理的工具类web应用,所谓的axis2的安装即指的是在servlet container中安装此包;文档包不再多说;源码包也不再多说。
官方文档说使用axis2需要的资源:java5及以上、不小于11M的硬盘空间和随便一个操作系统。另外为了把二进制数据打包成war文件,需要安装不低于1.6.5的apache ant;为了构建源码包,需要安装不低于maven2.0.7的maven。
2、安装
2.1:可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:
axis2-1.5.4-bin.zip(包含了Axis2中所有的jar文件)
axis2-1.5.4-war.zip(用于将WebService发布到Web容器中)
2.2:解压war包,并将axis2.war复制到<Tomcat安装目录>\webapps目录中
2.3:验证-启动tomcat(startup.bat),在浏览器地址栏中输入http://localhost:8080/axis2/
看到如上图片证明安装成功。
3、编写和发布WebService
3.1:POJO发布
POJO中所有的public方法将被发布成WebService方法(web project)
public class HelloService {
public String sayHello(){
return "hello";
}
public String sayHelloToPerson(String name){
if(name==null){
name = "nobody";
}
return "hello,"+name;
}
}
输入http://localhost:8080/axis2/services/listServices测试
3.1.1:注意
①、POJO类不能使用package关键字声明包
②、Axis2在默认情况下可以热发布WebService,即将WebService的.class文件复制到pojo目录中时,Tomcat不需要重新启动就可以自动发布WebService。
如果想取消Axis2的热发布功能,可以打开<Tomcat安装目录>\webapps\axis2\WEB-INF\conf\axis2.xml,
找到<parameter name="hotdeployment">true</parameter> 将true改为false。
③、在浏览器中测试WebService时,若WebService方法有参数,需要使用URL的请求参数来指定该WebService方法参数的值,请求参数名与方法参数名要一致。
④、发布WebService的pojo目录只是默认的,如果你想在其他的目录发布WebService,可以在axis2.xml中的<axisconfig>元素中添加如下的子元素:<deployer extension=".class" directory="my" class="org.apache.axis2.deployment.POJODeployer"/>
PS:上面的配置允许在<Tomcat安装目录>\webapps\axis2\WEB-INF\my目录中发布WebService
例如,将本例中的HelloService.class复制到my目录中也可以成功发布(但要删除pojo目录中的SimpleService.class,否则WebService会重名)。
⑤、直接发布,POJO类不能在任何包中
3.2:使用services.xml配置文件发布
1:实现一个pojo类
1.package com.sinosoft.webservice;
2.public class HelloServiceNew {
3. public String sayHelloNew(){
4. return "hello";
5. }
6. public String sayHelloToPersonNew(String name){
7. if(name==null){
8. name = "nobody";
9. }
10. return "hello,"+name;
11. }
12. public void updateData(String data){
13. System.out.println(data+" 已更新。");
14. }
15.}
2:将services.xml文件放在META-INF目录中,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<service name="HelloServiceNew">
<description>
Web Service例子
</description>
<parameter name="ServiceClass">
com.sinosoft.webservice.HelloServiceNew
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
PS:<service>:用于发布Web Service,一个<service>元素只能发布一个WebService类,
name属性表示WebService名即上面URL中"?"和"/"之间的部分,如下面的URL可以获得这个WebService的WSDL内容:
http://localhost:8080/axis2/services/HelloServiceNew?wsdl
<description>:表示当前Web Service的描述
<parameter>:用于设置WebService的参数,在这里用于设置WebService对应的类名。
<messageReceivers>:该元素用于设置处理WebService方法的处理器。
例如,sayHelloNew方法有一个返回值,因此,需要使用可处理输入输出的RPCMessageReceiver类,
而updateData方法没有返回值,因此,需要使用只能处理输入的RPCInOnlyMessageReceiver类。
注意:
①、必须打包成.aar文件,.aar文件实际上就是改变了扩展名的.jar文件。
②、现在建立了两个文件:HelloServiceNew.java和services.xml。将HelloServiceNew.java编译,生成HelloServiceNew.class。
③、services.xml和HelloServiceNew.class文件的位置如下:
D:\ws\ com\sinosoft\webservice\HelloServiceNew.class
D:\ws\META-INF\services.xml
④、在windows控制台中进入ws目录,并输入如下的命令生成.aar文件.(jar cvf ws.aar .)
⑤、.jar文件也可以发布webservice,但axis2官方文档中建议使用.aar文件发布webservice.
最后将ws.aar文件复制到<Tomcat安装目录>\webapps\axis2\WEB-INF\services目录中,
启动Tomcat后,就可以调用这个WebService了。
3.3:还可以通过如下配置发布WebService