axis1 和 axis2 的简单使用
晚上顺便学习了下axis1 和 axis2,发现两者的API相差很大,不知道现在更流行的是哪个,就晚上简单的入门后觉得,axis2还是比axis1开发起来容易上手的多,axis1就单单对服务器发布.wsdd文件就相当麻烦。下面分别就axis1和axis2说下如何集成到自己的项目里:
一、集成axis1
1、从官网下载项目http://ws.apache.org/axis/,最新的是1.4
2、解压下载的axis压缩包,假设AXIS_HOME为解压后的根目录,demo为自己项目的名称
3、将AXIS_HOME/lib目录下的所有jar包都复制到自己项目的WEB-INF/lib下
4、将AXIS_HOME/webapps/axis/WEB-INF/web.xml中与axis相关的配置都复制粘贴到自己项目的web.xml中去。
5、编写需要发布SOAP服务的java类,注意要发布的方法需是public的。以下以Foo.java为例:
public class Foo { public String sayHello(String name) { return "hello: " + name; }}String path = "http://localhost:8080/demo/Foo.jws";;Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(new URL(path));call.setOperationName(new QName(path ,"sayHello"));Object obj = call.invoke(new Object[]{"lady gaga"});System.out.println(obj.toString());<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><service name="foo" provider="java:RPC"><parameter name="className" value="Foo"/><parameter name="allowedMethods" value="sayHello" /></service></deployment>
String path = "http://localhost:8080/demo/Foo";;
//调用web service 的 url String path = "http://localhost:8080/demo/services/Foo"; //使用RPC的方式调用web service RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOption(); EndpointReference target = new EndpointReference(path); options.setTo(target); Object[] params = new Object[]{"lady gaga"}; Class[] classes = new Class[]{String.class}; QName q = new QName(path,"sayHello"); Object obj = serverClient.invokeBlocking(q,params,classes)[0]; System.out.println(obj.toString());