Amazon Ads

2013年7月31日 星期三

[分享]cannot Deploy...Servlet web service endpoint '' failure

今天在練習WS,要部署到Glassfish時,Server丟出了下列的錯誤:
 
cannot Deploy JAX-WS_WebServiceProvider
deploy is failing=Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: Servlet web service endpoint '' failure. Please see server.log for more details.

拜歐用了紅色部份當關鍵字去Google找,得到的答案有在Webmethod中使用了type為interface的當做參數,但這不符合我的情況。

後來再仔細檢查一次後,發現有一個Class做了WebService的annotation,但沒有任何method,如:

package idv.jk;

import javax.jws.WebService;

@WebService()
public class Calculator {

}

把@WebService的annotation拿掉後,就好了。

2013年7月24日 星期三

【分享】使用Eclipse的TCP/IP monitor監控網路傳輸

使用TCP/IP monitor來監控網路傳輸,其實類似把Eclipse當做一個代理伺服器,送出一個request出去,會先由TCP/IP monitor接收,再送往目的地;同樣地,目的伺服器回傳一個response回來,也是會由TCP/IP monitor接收後,再回傳本地客戶端。

首先要開啟Eclipse的TCP/IP monitor,如下圖:


再找到「Debug」下的「TCP/IP Monitor」:


當TCP/IP MonitorTCP/IP的View出現時,點按右上方的小小三角形,再點選「Properties」,再點按「Add...」:


就會跑出New Monitor的小對話窗出來:



在上面的對窗裡的設置如下:

  1. 「Local monitoring port」是指你的機器要當用來監控的話,是要送到你機器的那個port,這裡的設定不能和你機器上執行的伺服器使用的port重覆
  2. 「Host name」是指你要監控的伺服器的host name,如現在咱要監控咱機器上的Tomcat(它的port設為8888),就在這裡設為localhost
  3. 「Port」是指你要監控的伺服器的port,如上例本機Tomcat的8888
  4. 「Type」就是你要監控的傳輸內容類型

詳細說明可以參考這裡

設定完成後,可以看到你新增的Monitor,原始「Status」為「Stopped」,使用前記得點按右邊的「Start」鈕,讓他的狀態變成「Started」,若你local的port正被你機器上其他運作中的伺服器使用的話,他會報錯。


這裡要注意的是,因為這裡的「Local monitoring port」是設「6688」,所以呼叫伺服器的port,要改成「6688」,這樣送出的request才會先被TCP/IP Monitor接收到,如:


當送出上列的request後,切換到TCP/IP Monitor的View,就可以看到一堆訊息被記錄下來。


這個功能在開發Web Service等網路應用程式,可以提供不少有用的資訊。