由于最近做的一个项目需要与SAP通过WebServices进行接口传输数据。所以花时间去研究了一下当前的两种WebServices框架(axis2和XFire)。期间还是碰上了不少的异常, 现在就一起来分享一下我的心得吧!
主要的步骤如下:
1:下载axis2-1.4.1-bin.zip和axis2-1.4.1-war.zip两个支持包(由于附件大小限制,大家就自己到http://ws.apache.org/axis2/download/1_4_1/download.cgi自行去下载)
2:将两个包解压,将axis2.war放到服务器的发布目录下。
3: 访问一下http://localhost:8080/axis2就可以对webservices进行管理了。登录的用户名和密码默认(admin/axis2) 可以在/WEB-INF/conf/axis2.xml 中进行配置.
4: 用eclipse建一个工程。建立一个普通的java类如下:
package com.wujianjun.axis2;
public class MyServices {
public String sayHello(String name) { return "你好:"+ name; }
}
|
5:在src目录下建一个/src/META-INF/services.xml. 里面进行如下配置
<?xml version="1.0" encoding="UTF-8"?> <serviceGroup> <service name="MyService"> <description>Service description</description> <parameter name="ServiceClass"> com.wujianjun.axis2.MyServices </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> </serviceGroup> |
5: 将这个类利用eclipse的功能将src选中后导出成一个jar文件(service.jar)。
6: 访问http://localhost:8080/axis2进入到管理页面。再选择upload services, 再把services.jar 改成services.aar 后上传到服务器上去。再进入services页面则可看到刚发布的web services了。
7: 调用web services : 访问http://localhost:8080/axis2/services/MyService/。我们就可以看到服务器返回给我们的"你好: admin";sayHello?name=admin
客户端编程:
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class TestClient {
public static void main(String[] args) {
try {
ServiceClient sc = new ServiceClient();
Options opts = sc.getOptions();
opts.setTo(new EndpointReference("http://localhost:8080/axis2/services/MyService"));
opts.setAction("urn:sayHello");
OMElement res = sc.sendReceive(createPayLoad());
System.out.println(res);
} catch (AxisFault e) {
e.printStackTrace();
}
}
public static OMElement createPayLoad() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://ws.apache.org/axis2","nsl");
OMElement method = fac.createOMElement("sayHello", omNs);
OMElement value = fac.createOMElement("name", omNs);
value.setText("admin");
method.addChild(value);
return method;
}
}
我们再讲一下services.xml配置方式:
1、第一种配置方式: 按方法名称进行配置
<operation name="methodName">
<!--表示有参有返回值的方法-->
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<!--表示有参没有返回值的方法-->
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</operation>
2、第二种配置方式:
<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>
3、普通类配置:
<service name="serviceName">
<Description>服务的描述</Description>
<parameter name="ServiceClass">全类名</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>
4、与Spring集成配置(web工程):
<service name="MySpringService" targetNamespace="http://www.wujianjun.org">
<Description>测试spring与axis集成(web工程)</Description>
<parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
<parameter name="SpringBeanName">springBeanName</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>
5、与Spring集成配置(JAVA工程):
<service name="MySpringService" targetNamespace="http://www.wujianjun.org">
<Description>测试spring与axis集成(web工程)</Description>
<parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter>
<parameter name="SpringBeanName">springBeanName</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>
分享到:
相关推荐
Java Webservice Axis2 Client(含soapheader验证)
java调用webservice的jar包
本案例实现使用Axis2生成.arr包发布WebService服务,并使用Axis2生成客户端代码方式调用WebService
一个java编写基于Axis1.4的webservice接口,包括服务端接口和调用端接口。
NULL 博文链接:https://wujianjun.iteye.com/blog/517152
使用Java+Axis2调用Web Services 网络接口,代码中列举4个例子可以查看,有详细注释提供参考。
1)Java用axis发布/调用webservice demo;调用方式为wsdl2java生成本地client代码调用; 2)资源中包含代码和axis1.4安装文件;
webseservice 客户端调用,java发布的axis2 webservice,通过 js调用调用webservice,普通ajax实现,里面有详细注释,代码简单明了,我自己做过测试。希望对大家有所帮助。
Axis2是目前比较流行的WebService引擎。WebService被应用在很多不同的场景。例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。...
java调用webservice,axis方式,从后台到页面一整套的demo供大家参考。最简单的demo,所以用的servlet写的。 鼓捣了两天,希望对大家有帮助,也为自己以后使用留个备份。有不明白的可以给我留言
java_webservice_axis2简单开发实例。
详细讲述了如何同过axis开发java webservice
一个基于axis的webservice接口例子
在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上.用Eclipse开发,一开始就会想到xfire,它是集成与Eclipse的.所以 开发起来非常方便,现在我们来看看axis的开发...
Axis2是目前比较流行的WebService引擎。WebService被应用在很多不同的场景。例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。...
JAVA调用webservice(axis方式).doc
Axis2教程和java调用webservice的各种方法总结
java ,实现, axis2, webservice,源码,实例,可用 通用 aar文件
java 调用https发布的webservice接口实例及axis包及详细说明
Java通过Axis2调用SAP的Webservice 生成Java Proxy