Axis2的相关准备工作,以及提供的一个简单的例子
来源:互联网 发布:qq牧场羽鹤数据 编辑:程序博客网 时间:2024/05/14 14:16
参考网上的相关例子,来进行准备以及后续的开发工作。
一. 下载axis2-1.5.3-war.zip中的axis2.war这个文件放在tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。
之后的相关准备工作都是在这个包得基础之上进行开发与测试的。
二. 以下就可以进行简单例子的开发。
1. 进行服务端的开发:
public class WebServiceTest { public int add(int a,int b) { return a + b; } public User getUser(String name) { User user = new User(); user.setUsername(name); return user; } }
注意,上面的WebServiceTest是没有package的。Copy这个类的class文件,放到tomcat目录下的webapps的axis2的WEB-INF目录的pojo文件夹下。
如果没有pojo这个目录就手动创建一个一个文件夹。然后在浏览器输入:http://localhost:8080/axis2/
点击Services的链接就可以看到刚才手动发布的WebServiceTest了,或者是浏览器地址栏输入:http://localhost:8080/axis2/services/listServices
你就可以看到你刚才粘贴过去的这个WebService了。
点击链接就可以看到wsdl文件的内容了。内容很多,如果你看过axis1.x的介绍就知道wsdl文件的大致结构了。
复制上面的WebServiceTest的链接地址,然后带上方法名称和参数值即可测试调用是否成功。如下:
http://localhost:8080/axis2/services/WebServiceTest/sayHello?name=jack
http://localhost:8080/axis2/services/WebServiceTest这个是WebService的地址
/sayHello是方法名称,?name=jack是参数名称和值
在浏览器中输入上面的地址后,可以看到如下效果:
可以看到返回值,和方法名称。ns:sayHelloResponse是方法名称,所有的方法名称后都会带上Response,后面的ns当然是当前方法所在的类的包名了,
这里没有package就是默认的axis2的域名。同样,getAge方法,也是一样的调用方法。
http://localhost:8080/axis2/services/WebServiceTest/getAge?i=22
结果如下:
3. 下面就是客户端调用的代码例子了:
package client;import javax.xml.namespace.QName;import org.apache.axis2.AxisFault;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;public class ClientTest {public static void main(String[] args) throws AxisFault { //RPCServiceClient是RPC方式调用RPCServiceClient client = new RPCServiceClient();Options options = client.getOptions(); //设置调用WebService的URL String address = "http://localhost:8080/axis2/services/WebServiceTest";EndpointReference epf = new EndpointReference(address); options.setTo(epf);/** * * 设置将调用的方法,http://ws.apache.org/axis2是方法 * * 默认(没有package)命名空间,如果有包名 * * 就是http://service.hoo.com 包名倒过来即可 * * sayHello就是方法名称了 * */ //QName qname = new QName("http://ws.apache.org/axis2", "getUser");////指定调用的方法和传递参数数据,及设置返回值的类型 (需要设置好返回类型)//Object[] result = client.invokeBlocking(qname, new Object[] { "林伟" }, new Class[] { User.class }); ////值得注意的是axis2的WebService客户端调用的返回对象是一个Object的数组,这点和axis1.x有很大不同。我们一般拿数组的第一个值,转换强转即可。//System.out.println("result is " + ((User)result[0]).getUsername()); QName qname = new QName("http://ws.apache.org/axis2", "add");Object[] result = client.invokeBlocking(qname, new Object[] { new Integer(422),new Integer(1) }, new Class[] { int.class }); System.out.println("result is " + result[0]);}}
axis2的WebService客户端调用的返回对象是一个Object的数组,这点和axis1.x有很大不同。我们一般拿数组的第一个值,转换强转即可。
- Axis2的相关准备工作,以及提供的一个简单的例子
- axis2的一个小例子
- axis2的一个小例子
- Axis2 webService的的准备工作
- axis2--一个简单的webService
- axis2发布webService的一个简单实例
- 一个简单的例子
- FMDB的使用详解以及一个简单的小例子
- 一个Axis2 + eclipse开发Web服务的例子SayHi
- 一个Axis2 + eclipse开发Web服务的例子SayHi
- axis2的简单使用
- axis2的简单实例
- AXIS2的简单实例
- AntiXss 类库简介以及一个简单的例子
- 关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用)
- 《一个操作系统的实现》:准备工作
- 一个简单的Struts例子
- 一个简单的Hibernate例子!
- asp+access的网站实现随机调取文章
- 进程创建之copy_process函数
- three20 自定义TTTableViewCell
- 计划任务中使用NT AUTHORITY\SYSTEM用户和普通管理员用户有什么区别
- GTK+ 中的事件(events)和信号(signals)
- Axis2的相关准备工作,以及提供的一个简单的例子
- NoSQL数据库探讨之一 - 为什么要用非关系数据库?
- 汉字转拼音类
- RSA填充
- linux挂载与分配任务初识
- java实现排序算法(一)
- 利用poi对excel进行读取操作实例
- 三种压力测试工具 http_load 和 apache ab 、 siege 压力测试
- 在OpenGL和GLSL之间传递变量