使用AXIS2开发Webservice成功输出版本信息——小白入门
百度百科上定义AXIS2是新一代SOAP引擎。作为小白,就要循序渐进的学,就必须要知道什么是SOAP。
SOAP全称Simple Object Access Protocol,简单对象访问协议,就是说:是一种协议。
那么问题又来了,什么是webservice呢?Webservice个人的理解,就是为了将代码解耦,并且层次更分明,其实吧,和最基本的MVC也是一个目的,就是一个模块就干一个事,并且使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可以相互交换数据。
言归正传,既然是小白,那么就像学语言第一课一定自己跟着教程尝试的——Hello World程序一样,使用AXIS2开发WebService,那么一定也是要从”Hello World”开始的。
那么就开始webservice的Hello World吧,Windows下的安装一搜就有,HelloWorld也有,但是自己按照各种教程东拼西凑,写了个只有一个返回值函数的service端,然后又按照网上的教程使用了RPCServiceClient这种方式调用,可是各种报错,连找不到主方法的错都报出来,好崩溃,然后就只有找“老司机”帮忙了。“老司机”说,AXIS2有自带的service——Version,可以用Client端去请求获取一下,如果能获取到,那就是我网上抄来的service端有问题,如果不能,那就说明,Client端程序或者配置有问题。
结果果然印证了,是Client端配置的问题。所以连AXIS2自带的Version服务都获取不到。
以下为客户端代码块
//使用RPC方式调用Webservice
RPCServiceClient serviceClient = new RPCServiceClient();
//指定调用Webservice的URL
EndpointReference targetEPR = new EndpointReference(url);
Options options = serviceClient.getOptions();
//确定目标服务地址
options.setTo(targetEPR);
//确定调用方法
options.setAction("urn:VersionException");
//命名空间
QName qName = new QName("http://axisversion.sample", "getVersion");
Object[] parameters = new Object[]{};
OMElement element = serviceClient.invokeBlocking(qName, parameters);
String result = element.getFirstElement().getText();
然而代码不是出错的地方,**重点来了**居然一直出问题的是*services.xml*这个配置文件。 网上各种教程里面Client的处理方式都不同,连开发使用的应用程序也不一样,有用MyEclipse的,也有用Eclipse的,还有用IDEA的(官网上的支持包有Eclipse和IDEA两个版本的),我用的就是Eclipse,其实按照网上的教程操作无论是哪一种开发软件,应该都是可以帮助自动生成的。和搞webservice开发的同事交流之后被告知,不要用那什么坑爹的自动生成了,**自己写最靠谱!!!**嗯,然后发现问题原来出在services.xml里面对应的参数没有写对,换言之,配置没配对。 services.xml放在客户端程序的WebContent下的META-INF中。services.xml中的代码示例如下。
以下为services.xml
<service name="Version">
<description>
This service is axis2 version test
</description>
<parameter name="ServiceClass">com.axis2.test.TestClient</parameter>
<operation name="getVersion">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>
services.xml中各字段含义
<parameter name>里面是client程序包含完整包名的class类<operation name=”“>里面的参数是service里面的方法名
转载请注明原文地址: https://ju.6miu.com/read-1296900.html