(一) Axis2在tomcat发布
1. 编写服务器端代码:
public class AxisServices {
public String sayHello(String name){
return "hello:"+name;
}
}
2. 将下载的axis2.war包直接部署在tomcat下,将服务器类的class文件直接部署在axis2\WEB-INF\pojo目录中(根据axis2.xml的配置),然后访问tomcat下的axis2工程即可看到发布的ws,但是这种直接发布class文件到axis2工程目录的方法不适用带包的类。但项目中的ws几乎都需要一定的逻辑,这样带包也就不可避免,从而就需要配置services.xml文件,需放在META-INF文件夹中
<servicename="AxisService">
<description>
Axis Web Service
</description>
<parametername="ServiceClass">
com.bryand.webservices.AxisServices
</parameter>
<messageReceivers>
<messageReceivermep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
<messageReceivermep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
</messageReceivers>
</service>
Name:指定发布的ws名称,即访问ws的名称
Parameter::SerciceClass-指定服务端实现类
messageReceivers:soap信息处理器
还需要在项目web.xml配置axis2处理器servlet以处理ws请求数据
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
3. 发布WS
将services.xml文件放入META-INF中
在cmd命令中进入当前目录jar –cvfAxisService.aar ./*打包
aar和jar包文件类似,只是apache区别于jar包的别名
可以在axis2工程中http://localhost:8080/axis2中通过Administrator上传该包发布WS,或者直接将该包置于web-inf/services目录中,然后访问axis2工程如果看到了发布的方法就发布工程了。
如果是发布在其他项目中,也是将该aar包放在web-inf/services目录中
(依赖的jar包如果不清楚需要哪些就将axis2中的lib包都拷贝过来)
客户端测试代码:
//RPC方式调用axis ws
RPCServiceClient client=new RPCServiceClient();
Options options=client.getOptions();
EndpointReference target=new EndpointReference("http://localhost:8080/Bryand/services/AxisService");
options.setTo(target);
//指定参数值
Object[] obj=new Object[]{"hurong"};
//指定返回的数据类型的class类型
Class[] paramClass=new Class[]{String.class};
//指定调用的方法
QName qName=new QName("http://webservices.bryand.com","sayHello");//命名空间,也就是包名倒过来,在wsdl文件中可以找到
Object[] result=client.invokeBlocking(qName,obj,paramClass);
System.out.println("result: "+result[0]);
(二) Axis2在weblogic中发布
1. 在项目web-inf目录下添加weblogic.xml文件:加入
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
True保证了项目和weblogic中的包冲突时优先使用项目中的包
2. 添加services.list文件指定aar文件名