axis2 发布 webservice 和 java调用webservice

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.运行客户端,端测试结果:
你好 超人



  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值