Axis建立webservice客戶端和服務端

原創做品,容許轉載,轉載時請務必以超連接形式標明文章 原始出處 、做者信息和本人聲明。不然將追究法律責任。 做者:永恆の_☆ 地址:http://blog.csdn.net/chenghui0317/article/details/9318317html

1、Axis的介紹

Web Service是如今最適合實現SOA的技術,而Axis是實現Web Service的一種技術框架(架構)。java

2、Axis的準備條件

所須要的jar包:web

    axis.jarapache

    jaxrpc.jartomcat

   saaj.jar架構

   wsdl4j-1.5.1.jarapp

   commons-discovery-0.2.jar框架

   xbean.jaride

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

3、建立webservice服務端

一、先將jar包放入lib目錄

二、在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>
24 
25       
26 }  
View Code

 

三、建立一個xml, 名字叫server-config.wsdd 放在WEB-INF根目錄

 1 <?xml version="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.strutswebservice.server.HouseWebServiceImpl"/>  
 9     </service>  
10    
11     <transport name="http">  
12         <requestFlow>  
13             <handler type="URLMapper"/>  
14         </requestFlow>  
15     </transport>  
16 </deployment>  
View Code

 

四、根據配置再建立webservice服務端的實現類

 

一、定義接口HouseWebService.java 

public String getHouseList(String xmlStr);

二、實現該接口HouseWebServiceImpl.java 

能夠隨便返回一些字符串便可。

五、保存,發佈項目,啓動tomcat

在地址欄輸入:http://localhost:8080/house/services/houseWebService?wsdl  便可看到發佈的服務端的明細。

以下:

這就表示Axis發佈的webservice服務端成功了。

六、經過客戶端調用服務端webservice

 

 /** 
     * 調用webservice路口 
     * @param endpoint 地址 
     * @param methodName 調用的方法 
     * @param xmlStr 傳遞的xml字符串參數 
     * @return 
     */  
    public String invoke(String endpoint,String methodName,String xmlStr){  
        Service service = new Service();  
        Call call = null;  
        try {  
            call = (Call) service.createCall();  
        } catch (ServiceException e) {  
            e.printStackTrace();  
        }  
        QName qn = new QName(methodName);  
        call.setOperationName(qn);  
        call.setTargetEndpointAddress(endpoint);  
        call.setUseSOAPAction(true);  
        String result = "";  
        try {  
            // 給方法傳遞參數,而且調用方法  
            result = (String) call.invoke(new Object[] { xmlStr });  
        } catch (RemoteException e) {  
            e.printStackTrace();  
        }  
        System.out.println("result is " + result);  
        return result;  
    }  
  
public List<House> getHouseList() {  
        String xmlStr = "<?xml version=\"0\" encoding=\"UTF-8\"?>"  
                 + " <house>"  
                 + "   <condition>"  
                 + "     <title>便宜</title>"  
                 + "     <price></price>"  
                 + "     <streetname></streetname>"  
                 + "    <typename></typename>"  
                 + "    <floorage>100</floorage>"  
                 + "    <pageno></pageno>"  
                 + "    <pagesize></pagesize>"  
                 + "   </condition>"  
                 + " </house>";  
        String result = invoke("http://localhost:8080/house/services/houseWebService","getHouseList",xmlStr);  
}  

 

在這裏面傳遞的xml規範由 服務端本身規範好了,而後去解析、獲取參數,執行相應的操做,返回想要的結果給調用的客戶端。。

 

 

若是用axis調用axis的服務端使用使用起來很方便,可是調用cxf的服務端容易出錯。

好比:若是在調用的時候沒有指定命名空間,就不行。

在調用的時候不指定調用的參數以及返回的結果類型,就收不到客戶端發送的參數。能夠看看:http://blog.csdn.net/ch656409110/article/details/9310789

相關文章
相關標籤/搜索