axis2 发布 webservice 和 java调用webservice
发布时间:2020-12-17 01:07:12 所属栏目:安全 来源:网络整理
导读:1.下载与安装axis2: apache-tomcat-6.0.35.zipaxis2-1.6.1-war.zip 解压,然后将axis2.war复制到tomcat的webapp目录中,安装完毕! 启动tomcat测试axis2是否安装成功: http://localhost:8080/axis2 2.首先简单介绍一下webapp/axis2/的目录结构如下: axis2
1.下载与安装axis2:
apache-tomcat-6.0.35.zip axis2-1.6.1-war.zip解压,然后将axis2.war复制到tomcat的webapp目录中,安装完毕! 启动tomcat测试axis2是否安装成功: http://localhost:8080/axis2 2.首先简单介绍一下webapp/axis2/的目录结构如下: axis2 |-- axis2-web | |-- xxx.jsp... |-- META-INF |-- WEB-INF | |-- classes | |-- conf | |-- lib | |-- modules | |-- services | | |-- version-1.6.1.aar | |-- web.xml其中,services目录就是用来发布webservice的目录,这里有一个自带的service:version-1.6.1.aar 3.开发service端:HelloService .java package com.service; public class HelloService { public String getName(String name) { return "hello: " + name; } } 4.配置文件:service.xml <service name="HelloService"> <description>HelloWorld webservice</description> <parameter name="ServiceClass"> com.service.HelloService </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.建立如下的目录结构: test |-- META-INF | |--services.xml | |-- com | |-- service | |-- HelloService.java | |-- HelloService.class这里test可以随便命名,然后要把test目录里面的所有文件打包成zip格式的,后缀必须是*.aar。 打包方法1,使用7-Zip压缩工具打包,格式选择zip,压缩之后,把文件的后缀改为aar,test.aar。 打包方法2,其实“con/...”这个部分是class文件,可以放入/webapps/WEB-INF/class目录下。也就是说打包的时候可以之打包“META-INF/...”部分。而“con/...”部分可能会经常更改,在Eclipse开发过程中可以放入src目录中。 打包完成之后,然后将文件test.aar复制到services目录下面。重启tomcat,进行测试: http://localhost:8080/axis2/services/listServices 6.开发客户端:RPCClient.java package com.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 { RPCServiceClient client = new RPCServiceClient(); Options options = client.getOptions(); // 指定调用WebService的URL options.setTo(new EndpointReference("http://localhost:8080/axis2/services/HelloService")); // 指定getName方法的参数值 Object[] objects = new Object[] { "超人" }; // 指定getName方法返回值的数据类型的Class Class<?>[] classes = new Class[] { String.class }; // 指定要调用的方法名:getName 和 WSDL文件中的命名空间:http://service.com // 注意:命名空间(http://service.com)与类HelloService的包名(com.service)有一定关系。 QName qname = new QName("http://service.com","getName"); String result = (String) client.invokeBlocking(qname,objects,classes)[0]; System.out.println(result); } } 7.运行客户端,端测试结果: 你好 超人 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |