快速业务通道

WebService大讲堂之Axis2(1):用POJO实现0配置的WebService - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
新,也就是说 ,一旦成功发布了WebService,再想更新该WebService,就必须重启Tomcat。这对于开发人员调试 WebService非常不方便,因此,在开发WebService时,可以将Axis2设为热更新。在axis2.xml文件中找到 <parameter name="hotupdate">false</parameter>,将false改为true即可。

3.在浏览器中测试WebService时,如果WebService方法有参数,需要使用URL的请求参数来指定该 WebService方法参数的值,请求参数名与方法参数名要一致,例如,要测试getGreeting方法,请求参数 名应为name,如上面的URL所示。

4.发布WebService的pojo目录只是默认的,如果读者想在其他的目录发布WebService,可以打开 axis2.xml文件,并在<axisconfig>元素中添加如下的子元素:

<deployer extension=".class" directory="my" class="org.apache.axis2.deployment.POJODeployer" />

上面的配置允许在<Tomcat安装目录>\webapps\axis2\WEB-INF\my目录中发布WebService。例如 ,将本例中的SimpleService.class复制到my目录中也可以成功发布(但要删除pojo目录中的 SimpleService.class,否则WebService会重名)。

三、 用Java实现调用WebService的客户端程序

WebService是为程序服务的,只在浏览器中访问WebService是没有意义的。因此,在本节使用Java实 现了一个控制台程序来调用上一节发布的WebService。调用WebService的客户端代码如下:

package client;
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class RPCClient
{
    public static void main(String[] args) throws Exception  
    {
        //  使用RPC方式调用WebService        
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        //  指定调用WebService的URL
        EndpointReference targetEPR = new EndpointReference(
                "http://localhost:8080/axis2/services/SimpleService");
        options.setTo(targetEPR);
        //  指定getGreeting方法的参数值
        Object[] opAddEntryArgs = new Object[] {"超人"};
        //  指定getGreeting方法返回值的数据类型的Class对象
        Class[] classes = new Class[] {String.class};
        //  指定要调用的getGreeting方法及WSDL文件的命名空间
        QName opAddEntry = new QName("http://ws.apache.org/axis2", "getGreeting");
        //  调用getGreeting方法并输出该方法的返回值
        System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
        //  下面是调用getPrice方法的代码,这些代码与调用getGreeting方法的代码类似
        classes = new Class[] {int.class};
        opAddEntry = new QName("http://ws.apache.org/axis2", "getPrice");
        System.out.println(serviceClient.invokeBlocking(opAddEntry, new Object[]{}, classes)[0]);
    } 
}

WebService大讲堂之Axis2(1):用POJO实现0配置的WebService(4)

时间:2011-08-13 BlogJava 哈佛校训

运行上面的程序后,将在控制台输出如下的信息:

你好超人

443

在编写客户端代码时应注意如下几点:

1.客户端代码需要引用很多Axis2的jar包,如果读者不太清楚要引用哪个jar包,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号