axis实现webservice
转:http://blog.csdn.net/lixj2009/article/details/4752721 首先到apache的网站下载axis的开发包,好久没看了,现在已经开始出2.0的啦,不过好像还不是很成熟,这里,我们还是用1.x的包。最新的是1.4的包。 一、服务器端开发 首先编写服务端程序,这时我们完全不用考虑他是不是当作webservcies来发布的,因为在写法上没有什么不同。比如我们写了一个很简单的java程序,代码如下: package com.service; public class Calculator { public int add(int i1,int i2) { System.out.println("调用add方法"); return i1 + i2; } public int subtract(int i1,int i2) { System.out.println("调用subtract方法"); return i1 - i2; } } 如果我们要把他发布成为services,首先需要把axis-1_3下的lib文件复制到我们的web服务的web-inf 的lib下。 然后在web.xml里增加以下内容 <?xml version="1.0" encoding="UTF-8"?> <deployment name="defaultClientConfig" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler" xmlns="http://xml.apache.org/axis/wsdd/"> <globalConfiguration name="defaultClientConfig"> <requestFlow name="RequestFlow1" type=""> <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="session" /> </handler> <handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="request" /> <parameter name="extension" value=".jwr" /> </handler> </requestFlow> </globalConfiguration> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" /> <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder" /> <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" /> <transport name="http" type=""> <requestFlow name="RequestFlow1" type=""> <handler name="Handler1" type="URLMapper" /> <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler" /> </requestFlow> </transport> <transport name="local" type=""> <responseFlow name="ResponseFlow1" type=""> <handler name="Handler1" type="LocalResponder" /> </responseFlow> </transport> <service name="Calculator" type="" provider="java:RPC" style="rpc" use="encoded"> <parameter name="scope" value="Request" /> <parameter name="className" value="com.service.Calculator" /> <parameter name="allowedMethods" value="*" /> <namespace>http://example2.userguide.samples</namespace> </service> </deployment> 其中要发布的每个service都需要加上一个service的节点描述,其他多余的servie节点可以删除的,这样重启tomcat后,我们就可以以http://localhost:8080/services/Calculator 来访问这个service了,同样以http://localhost:8080/services/Calculator?wsdl 访问到它的wsdl描述文件。 二、客户端开发 在开发工具中引进lib下的jar包;然后编写客户端程序 package com.client; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import javax.xml.rpc.ParameterMode; public class CalcClient { public static void main(String[] args) throws Exception { try { //String endpoint = "https://localhost:8440/services/Calculator"; String endpoint = "http://127.0.0.1:8090/axisService/services/Calculator"; Integer i1 = new Integer(1); Integer i2 = new Integer(2); Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName("add");//调用方法的名字 call.addParameter("i1",XMLType.XSD_INT,ParameterMode.IN); call.addParameter("i2",ParameterMode.IN); call.setReturnType(XMLType.XSD_INT); Integer ret = (Integer) call.invoke(new Object[] { i1,i2 }); System.out.println("Got result : " + ret); } catch (Exception e) { e.printStackTrace(); } } } 其中 setOperationName就是指定执行的方法,addParameter就是指定参数 运行一下吧,结果: Got result : 3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |