WebService技術,服務端發佈到Tomcat(使用Servlet發佈),客戶端使用axis2實現(二)

仍是在WebService技術,服務端and客戶端JDK-wsimport工具(一)的基礎上實現。新建一個包:com.aixs2client。目錄結構以下:html

 

1、服務端:java

  一、仍是使用com.webservice包裏的WebServiceImp.java 文件,可是不使用本地發佈,因此須要刪除發佈代碼。web

  WebServiceImp.java:apache

package com.webservice; import javax.jws.WebMethod; import javax.jws.WebService; @WebService public class WebServiceImp { @WebMethod public String getInfo(String id){ String info=""; if (id.equals("1")) { info="張三"; }else if (id.equals("2")) { info="李四"; }else if(id.equals("3")){ info="王五"; }else if(id.equals("4")) { info="趙六"; }else { info="用戶不存在"; } return info; } }

 二、WEB-INF下新建一個xml文件,sun-jaxws.xml,內容以下:瀏覽器

endpoint 表示使用此配置文件裏的參數發佈
name:發佈的名稱,名字能夠隨意
implementation:發佈的服務的實現類url-pattern:訪問wsdl文檔時的路徑
1 <?xml version="1.0" encoding="UTF-8"?> 2 <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> 3 <endpoint name="WebServiceDemo" implementation="com.webservice.WebServiceImp" url-pattern="/WebServiceDemo"> 4 </endpoint> 5 </endpoints>

 

 

三、在WEB-INF下的web.xml中加入servlet配置.內容以下:app

  web.xmljsp

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>    
    <servlet>
        <servlet-name>jaxws</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>jaxws</servlet-name>
        <url-pattern>/WebServiceDemo</url-pattern>
    </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
load-on-startup:是否應該在web應用程序啓動的時候就加載這個servlet,調用servlet中的init()方法,若是值爲正整數或者0時,表示容器在應用啓動時就加載並初始化這個servlet,值越小,servlet的優先級越高,就越先被加載。
url-pattern:請求的路徑

 

四、配置完成後,將項目部署到Tomcat中,並在瀏覽器地址欄輸入servlet請求的地址:http://127.0.0.1:8080/WebService/WebServiceDemo。工具

能夠看到以下頁面:測試

點擊WSDL後面的url,看到wsdl文檔:url

此時服務端完成,服務已經隨着Tomcat的啓動和關閉,能夠使用Soap UI進行測試。

 

2、客戶端

一、在com.aixs2client包下新建ClientService.java

 1 package com.aixs2client;  2 import org.apache.axiom.om.OMElement;  3 import org.apache.axis2.AxisFault;  4 import org.apache.axis2.addressing.EndpointReference;  5 import org.apache.axis2.client.Options;  6 import org.apache.axis2.rpc.client.RPCServiceClient;  7 
 8 import javax.xml.namespace.QName;  9 public class ClientService { 10         public static String getServiceInfo(String Id) throws Exception { 11             String result = null; 12             //名稱空間
13             String nameSpace="http://webservice.com/"; 14             //服務的方法
15             String method="getInfo"; 16             //wsdl文檔地址
17             String Url = "http://127.0.0.1:8080/WebService/WebServiceDemo?wsdl"; 18             QName qname = new QName(nameSpace,method); 19             Object[] param = new Object[] { Id }; 20             try { 21                 //建立客戶端實例
22                 RPCServiceClient client = new RPCServiceClient(); 23                 Options options = new Options(); 24                 options.setTo(new EndpointReference(Url)); 25                 options.setAction(nameSpace+method);//調用.net等webservice服務是務必加上
26  client.setOptions(options); 27                 OMElement element = client.invokeBlocking(qname, param); 28                 //獲取服務端返回的結果
29                 result = element.getFirstElement().getText(); 30  System.out.println(result); 31             } catch (AxisFault e) { 32  e.printStackTrace(); 33  } 34             return result; 35  } 36         public static void main(String[] args) { 37             try { 38                 getServiceInfo("1"); 39                 getServiceInfo("3"); 40                 getServiceInfo("4"); 41                 getServiceInfo("100"); 42             } catch (Exception e) { 43  e.printStackTrace(); 44  } 45  } 46         
47  } 48 
49

運行客戶端代碼,調用服務端方法,結果以下:

相關文章
相關標籤/搜索