首页 > 技术文章 > Axis创建webservice客户端和服务端

zfy0098 2016-03-15 16:48 原文

一、Axis的介绍

Web Service是现在最适合实现SOA的技术,而Axis是实现Web Service的一种技术框架(架构)。

二、Axis的准备条件

所需要的jar包:

    axis.jar

    jaxrpc.jar

   saaj.jar

   wsdl4j-1.5.1.jar

   commons-discovery-0.2.jar

   xbean.jar

下载地址:http://download.csdn.net/detail/ch656409110/5747129

三、创建webservice服务端

1、先将jar包放入lib目录

2、在web.xml中配置axis监听器和核心servlet

 1 <!-- axis配置 -->  
 2 <listener>  
 3   <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>  
 4 </listener>  
 5 <servlet>  
 6   <display-name>Apache-Axis Servlet</display-name>  
 7   <servlet-name>AxisServlet</servlet-name>  
 8   <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>  
 9 </servlet>  
10 <servlet>  
11   <display-name>Axis Admin Servlet</display-name>  
12   <servlet-name>AdminServlet</servlet-name>  
13   <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>  
14   <load-on-startup>100</load-on-startup>  
15 </servlet>  
16 <servlet-mapping>  
17   <servlet-name>AxisServlet</servlet-name>  
18   <url-pattern>/servlet/AxisServlet</url-pattern>  
19 </servlet-mapping>  
20 <servlet-mapping>  
21   <servlet-name>AxisServlet</servlet-name>  
22   <url-pattern>/services/*</url-pattern>  
23 </servlet-mapping>  

3、创建一个xml, 名字叫server-config.wsdd 放在WEB-INF根目录

 1 <?xml version="1.0" encoding="UTF-8"?>  
 2   
 3 <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
 4     <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>  
 5     
 6     <service name="houseWebService" provider="java:RPC">  
 7         <parameter name="allowedMethods" value="*"/>  
 8         <parameter name="className" value="com.struts2.webservice.server.HouseWebServiceImpl"/>  
 9     </service>  
10    
11     <transport name="http">  
12         <requestFlow>  
13             <handler type="URLMapper"/>  
14         </requestFlow>  
15     </transport>  
16 </deployment>  

4、根据配置再创建webservice服务端的实现类

 

1、定义接口HouseWebService.java  

public String getHouseList(String xmlStr);

2、实现该接口HouseWebServiceImpl.java 

可以随便返回一些字符串即可。

5、保存,发布项目,启动tomcat

在地址栏输入:http://localhost:8080/house/services/houseWebService?wsdl  即可看到发布的服务端的明细。

如下:

这就表示Axis发布的webservice服务端成功了。

6、通过客户端调用服务端webservice

 1  /** 
 2      * 调用webservice路口 
 3      * @param endpoint 地址 
 4      * @param methodName 调用的方法 
 5      * @param xmlStr 传递的xml字符串参数 
 6      * @return 
 7      */  
 8     public String invoke(String endpoint,String methodName,String xmlStr){  
 9         Service service = new Service();  
10         Call call = null;  
11         try {  
12             call = (Call) service.createCall();  
13         } catch (ServiceException e) {  
14             e.printStackTrace();  
15         }  
16         QName qn = new QName(methodName);  
17         call.setOperationName(qn);  
18         call.setTargetEndpointAddress(endpoint);  
19         call.setUseSOAPAction(true);  
20         String result = "";  
21         try {  
22             // 给方法传递参数,并且调用方法  
23             result = (String) call.invoke(new Object[] { xmlStr });  
24         } catch (RemoteException e) {  
25             e.printStackTrace();  
26         }  
27         System.out.println("result is " + result);  
28         return result;  
29     }  
30   
31 public List<House> getHouseList() {  
32         String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"  
33                  + " <house>"  
34                  + "   <condition>"  
35                  + "     <title>便宜</title>"  
36                  + "     <price></price>"  
37                  + "     <streetname></streetname>"  
38                  + "    <typename></typename>"  
39                  + "    <floorage>100</floorage>"  
40                  + "    <pageno></pageno>"  
41                  + "    <pagesize></pagesize>"  
42                  + "   </condition>"  
43                  + " </house>";  
44         String result = invoke("http://localhost:8080/house/services/houseWebService","getHouseList",xmlStr);  
45 }  

在这里面传递的xml规范由 服务端自己规范好了,然后去解析、获取参数,执行相应的操作,返回想要的结果给调用的客户端。。

 

本文转载于:http://blog.csdn.net/chenghui0317/article/details/9318317

 

推荐阅读