webservice Axis 小结
webservice 是分散式应用程序的发展趋势。只要webservice公开了服务接口,远程客户端就可以调用服务。几乎所有企业内部系统之间的交互都会用到webservice。
webservice更多的是一种标准,而不是一种具体的技术。java中实现webservice的框架很多,如:Axis,Xfire,CXF等,其中较成熟的是Axis,其实只要掌握了一种,其他的都比较相似。
下面主要来说明Axis的实现:
1.准备工作:
Axis是Apache SOAP的一个实现,所以大家可以去Apache官网下载所要的jar包,当然可以直接百度或谷歌出来。
http://www.apache.org/dyn/closer.cgi/ws/axis/1_4 这是官网下载地址,但是好像用不了...但是网络的力量是巨大的,http://pan.baidu.com/share/link?shareid=489426&uk=2047286654 这个是可以用的,感谢好心人的分享。
在解压的目录下有一个webapps的目录,这里面就有我们要的jar包了,可以将webapps下的axis部署到tomcat下(直接复制到tomcat的webapps目录下),然后访问http://127.0.0.1:8080/axis
点击Validation 就能看到所需jar包是否都有,不全的话就要另外下载了。
2.webservice实例:
2.1新建一个工程webservice,在web.xml中添加servlet
<!-- 增加 AxisServlet--> <servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
2.2添加server-config.wsdd文件:
<?xml version="1.0" encoding="gb2312"?> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <globalConfiguration> <parameter name="sendMultiRefs" value="true"/> <parameter name="disablePrettyXML" value="true"/> <parameter name="dotNetSoapEncFix" value="true"/> <parameter name="enableNamespacePrefixOptimization" value="false"/> <parameter name="sendXMLDeclaration" value="true"/> <parameter name="sendXsiTypes" value="true"/> <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> </globalConfiguration> <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/> <service name="HelloWebservice" provider="java:RPC"> <parameter name="className" value="com.dcstudio.HelloAxis"/> <parameter name="scope" value="request"/> <parameter name="allowedMethods" value="*"/> <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> </service> <!--红色的属性根据具体情况变动,value="*"表示可以访问所有的方法,当然亦可以指定一个--> <transport name="http"> <requestFlow> <handler type="URLMapper"/> </requestFlow> </transport> </deployment>
2.3编写服务端代码:
package com.dcstudio; import org.apache.log4j.Logger; public class HelloAxis { private static final Logger logger = Logger.getLogger(HelloAxis.class); public String AxisTest(String s){ System.out.println("client:"+s); String str = "Hello Webservice !!"; return str; } }
3.新建客户端项目webservice_client
3.1新建客户端访问代码:
package com.dcstudio; import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; /** * webservice的客户端程序 * @author Administrator * */ public class Client { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String url="http://127.0.0.1:8080/webservice/services/HelloWebservice"; Service ser=new Service(); try { Call call=(Call)ser.createCall(); call.setTargetEndpointAddress(url); // call.setOperationName(new QName(targetEndPoint, "hello" )); call.setOperation("AxisTest"); String result=(String)call.invoke(new Object[]{new String("I'm client")}); System.out.println("result="+result); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
4.部署工程,访问验证
浙公网安备 33010602011771号