JAX-WS 學習三:進階一(wsimport和TCP/IP monitor)

來源:互聯網
上載者:User
JAX-WS 學習三:進階一(wsimport和TCP/IP monitor)
    部落格分類: 

  • JAX-WS
  • Java相關
 

前兩節中簡單的介紹了一下基本的JAX-WS API的使用,這一節更進一步的介紹一些其他的內容

 

一、wsimport工具的使用

 

在第二節中(http://liugang594.iteye.com/blog/1343608),可以看到要手動建立一個client端進行一次正確的調用,需要關注的東西還是挺多的,尤其是定義一個符合格式的方法定義在參數相當複雜的情況下是相當不容易的。

 

這裡JDK中提供了一個 wsimport 的工具,路徑為 “JDK_PATH/bin”,可以相當方便的用來建立相應wsdl的Service類檔案和Port類檔案。

 

要使用wsimport,命令列如下:

Java代碼  
  1. wsimport -keep http://localhost:9999/ws/hello?wsdl  

 

然後就會根據這個wsdl產生幾個相應的類檔案,例如使用第一節的例子會產生8個類檔案

 

其中主要的是一個Service類 CalculatorImplService.java 和 一個EndpointInterface類 Calculator。

 

有了這些類以後,就可以很簡單的實現Client端了,例如:

Java代碼  
  1. CalculatorImplService service = new CalculatorImplService();  
  2. Calculator calculator = service.getPortName();  
  3. System.out.println(calculator.add(1, 2));  

 

如此方便,不能自己。

 

二、查看來往的Soap訊息

 

由於所有的訊息都是通過類的方法被Java在後台封裝了,所以一大不利處就是沒法查看具體發送的Soap訊息和返回的結果。

 

所以需要一個工具用來查看與特定的Server和Port上訊息的互動。有一大堆工具可以做這個,這裡我介紹一下Eclipse裡的TCP/IP Monitor工具如何來做。

 

開啟 "Window->Preferences->Run/Debug->TCP/IP Monitor"菜單就可以看到TCP/IP Monitor的配置頁了,如下。(如果你的eclipse裡沒有這一項,那可能是你的版本比較低,建議更新一個版本試試,我的版本是3.6.2)

 

點擊“add”按鈕,就可以建立一個Monitor,配置說明如下:

  1. Local monitoring port:定義用來中轉的本地連接埠。例如你本來想訪問的時候本地的8000連接埠,你在此處定義的是8001連接埠,那你的訪問連接埠也需要改成8001,然後由monitor把你的請求進行轉寄。
  2. Host name:你要監視的與本地通訊的主機地址
  3. Port:你要監視的與本地通訊的主機連接埠
  4. Type:通訊方式,有HTTP和TCP/IP兩個選項
  5. Timeout:逾時設定

定義完以後,選中這個配置,點擊"start",監視器即起用。

 

然後通過"Window->Show View->Other->Debug->TCP/IP Monitor",開啟監視視圖:

 

即可。

 

例如我有一個wsdl的定義地址為:http://localhost:8086/calculator?wsdl

 

本來我的Client端的實現代碼應該是:

 

Java代碼  
  1. URL url = new URL("http://localhost:8086/calculator?wsdl");  
  2. QName qName = new QName("http://www.liulutu.com/calculator/",  
  3. "CalculatorImplService");  
  4. Service service = Service.create(url, qName);  
  5. Calculator port = service.getPort(Calculator.class);  
  6. System.out.println(port.add(1, 2));  

 一旦我使用了諸如上面的監視器,並且想監視這個WebService的請求成響應,那麼這裡url的連接埠就需要由8086改成8087:

Java代碼  
  1. URL url = new URL("http://localhost:8087/calculator?wsdl");  
  2. QName qName = new QName("http://www.liulutu.com/calculator/",  
  3. "CalculatorImplService");  
  4. Service service = Service.create(url, qName);  
  5. Calculator port = service.getPort(Calculator.class);  
  6. System.out.println(port.add(1, 2));  

 通過監視器來進行中間的轉寄,即可觀察到來往的訊息互動:

  • 查看圖片附件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.