天天看點

myeclipse基于JAX-WS開發Webservice

1、建立工程

       建立一個Web Service Project工程File->New->Web Service Project(Optional Maven Support),取名為WebServiceProject.

myeclipse基于JAX-WS開發Webservice

       注意:JAX-WS支援隻在javaEE5或更高版本的工程中是可行的。如果你需要使用低版本的工程類型(java1.4或者1.3),那麼隻能使用XFire Web Service代替JAX-WS。 

myeclipse基于JAX-WS開發Webservice

       這裡我們使用上面的JAX—WS。 

2、建立服務類 

       服務類就是一個普通的java類,負責提供我們想要釋出的執行方法。這裡我們寫一個簡單的電腦類,實作幾個典型的電腦應用方法,如加減乘除。 

       首先,我們先建一個包,WebServiceProject->src->new->package,取名com.myeclipseide.ws。 

myeclipse基于JAX-WS開發Webservice

            讓後我們在這個包下建一個類,Calculator.java. 

myeclipse基于JAX-WS開發Webservice

       根據上面提到的,這個電腦類實作電腦的加減乘除算法,簡單實作: 

Java代碼  

myeclipse基于JAX-WS開發Webservice
  1. package com.myeclipseide.ws;   
  2. public class Calculator {   
  3.     public int add(int a, int b) {   
  4.         return (a + b);   
  5.     }   
  6.     public int subtract(int a, int b) {   
  7.         return (a - b);   
  8.     }   
  9.     public int multiply(int a, int b) {   
  10.         return (a * b);   
  11.     }   
  12.     public int divide(int a, int b) {   
  13.         return (a / b);   
  14.     }   

    //支援傳回自定義類型 

  15. public User list(String name){

    User u = new User();

    u.setName(name);

    return u;

    }

    public List<User> listAll(String name){

    List<User> list = new ArrayList<User>();

    for(int i=0;i<10;i++){

    User u = new User();

    u.setName(name);

    list.add(u);

    }

    return list;

    }

  16. }   

        可以看出,這個類中的方法是非常簡單的,沒有用到特殊的注釋還有接口,父類之類的東西。 

3、建立一個Web Service 

         在上面的工具條中點選建立Web Service 

myeclipse基于JAX-WS開發Webservice

         注意:如果沒有的話可以File->New->others->Myeclipse->WebService->webService 

        點選之後,出現的螢幕,在Strategy中選擇Bottom-up scenario,因為我們已經建立好了Calculator類而且想根據它建立JAX-WS服務。 

myeclipse基于JAX-WS開發Webservice

        下面是建立的最後一個螢幕,你需要選擇提供webService方法的javaBean,在我們這個例子中就是我們已經建立好的Calculator類。 

myeclipse基于JAX-WS開發Webservice

         填好之後,Myeclipse會自動幫我們填滿其他的項,Select Generate WSDL in project and hit Finish. 

myeclipse基于JAX-WS開發Webservice

        點選完成之後,Myeclipse會自動生成CalculatorDelegate代理類,還有一些必須的JAX-WS描述符,而且會自動在伺服器目錄下的web.xml中配置WebService的一些mappings,友善将webService部署到伺服器中。 

myeclipse基于JAX-WS開發Webservice

        到此web service已經建立好了,我們開始部署它然後進行測試。 

4、部署和測試webService

       這裡我們不使用用Myeclipse自帶的tomcat伺服器,使用自己應經在電腦中部署好的tomcat。 在server面闆中右擊,選擇configure

myeclipse基于JAX-WS開發Webservice

         部署自己的tomcat注意選擇jdk要跟項目中的相同。 

myeclipse基于JAX-WS開發Webservice

         現在要向工程中導入JAX-WS的jar包,在項目名稱上右擊->properties->Add Library->Myeclipse Libraries->最後面的兩個。 

myeclipse基于JAX-WS開發Webservice
myeclipse基于JAX-WS開發Webservice

      點選完成,導入成功。 注意:Myeclipse自帶的tomcat中有自帶的這兩個jar包,可以不用導入。 

       在部署好的tomcat伺服器上右擊選擇Add Deployment 

myeclipse基于JAX-WS開發Webservice
myeclipse基于JAX-WS開發Webservice

        點選完成。 測試 

        運作tomcat伺服器,在工具欄中點選launch WebService Explorer 

myeclipse基于JAX-WS開發Webservice

        打開後,點選右上角的WSDL視圖,可以看到下面的螢幕 

myeclipse基于JAX-WS開發Webservice

       在WSDL URL中填寫路徑:http://localhost:8888/WebServiceProject/CalculatorPort?WSDL ,解釋下路徑組成: 

        http://localhost:8888/是伺服器的路徑,我的端口号是8888,可以根據自己的更改,一般都是8080。 

        /WebServiceProject = We know by default the Web Context-root that is used to deploy(部署) web projects matches the name of the projects. (因為我們沒有為這個工程自定義我們的Web Context-root,是以他就是這個工程的名字) 

       /CalculatorPort = As we saw from the last screenshot in Section #5, when our JAX-WS web service was generated, it was bound using a servlet-mapping in the web.xml file to the /CalculatorPort path. 

Xml代碼  

myeclipse基于JAX-WS開發Webservice
  1. <servlet>  
  2.     <description>JAX-WS endpoint - CalculatorService</description>  
  3.     <display-name>CalculatorService</display-name>  
  4.     <servlet-name>CalculatorService</servlet-name>  
  5.     <servlet-class>  
  6.         com.sun.xml.ws.transport.http.servlet.WSServlet  
  7.     </servlet-class>  
  8.     <load-on-startup>1</load-on-startup>  
  9.   </servlet>  
  10.   <servlet-mapping>  
  11.     <servlet-name>CalculatorService</servlet-name>  
  12.     <url-pattern>/CalculatorPort</url-pattern>  
  13.   </servlet-mapping>  

 ?WSDL = This is a universal query string argument that can be added to the end of any web service which will tell the web service to return it's full WSDL to the caller. In this case, the WSDL is returned to our Web Services Explorer tool which loads it up, and displays the web services exposed operations to us. 

myeclipse基于JAX-WS開發Webservice

       弄清楚之後,我們開始測試,比如我們選擇add方法: 填寫args,點選go,在status中就會顯示結果。

       現在我們已經部署好Webservice,而且應經測試過了,那我們建立一個Webservice client,來調用Webservice提供的方法。 建立一個java project,給他取個名字。比如我們叫它ClientofWebService

5、建立Webservice Client 

myeclipse基于JAX-WS開發Webservice

        在工具條中點選new Web Service Client

myeclipse基于JAX-WS開發Webservice

          然後按照以下步驟操作:

myeclipse基于JAX-WS開發Webservice

        The last step of the web service client creation is to specify either a WSDL File or a WSDL URL for the wizard to retrieve the web service WSDL from. In our case we are using the URL and generate the client into the new package com.myeclipseide.ws.client: 

http://localhost:8888/WebServiceProject/CalculatorPort?WSDL 

myeclipse基于JAX-WS開發Webservice

        點選Next知道完成。 

        可以看到在建立的java project ClientofWebService中,src檔案夾下産生了許多的檔案,根據名稱我們大體可以了解其意思,可以打開看一下源代碼,其實不難了解。比如add檔案,就是Calculator類中add方法的兩個參數的get和set方法。其他類似。 

我們在檔案夾下見一個類test.java寫一個main函數測試 

Java代碼  

myeclipse基于JAX-WS開發Webservice
  1. public static void main(String[] args) {   
  2.     CalculatorService service = new CalculatorService();   
  3.     CalculatorDelegate delegate = service.getCalculatorPort();   
  4.     System.out.println("1. 3+7=" + delegate.add(3, 7));   
  5.     System.out.println("2. 12-2=" + delegate.subtract(12, 2));   
  6.     System.out.println("3. 9*9=" + delegate.multiply(9, 9));   
  7.     System.out.println("4. 40/2=" + delegate.divide(40, 2));   

    User u = delegate.list("dasdsa");

       java.util.List<User> list  = delegate.listAll("11111111111fdsf");

       System.out.println(u.getName());

  8. }   

     運作得到如下結果: 

1. 3+7=10 

2. 12-2=10 

3. 9*9=81 

4. 40/2=20 

     測試完成。