2013-01-09 56 views
2

我有通過Swing客戶端使用的CXF Web服務。首先,我創建一個JaxWsProxyFactoryBean,然後創建JAX WS代理。此時,我想測試客戶端是否可以正確地向Web服務發送消息。我知道HTTP是一種無狀態協議,因此它不會在其層中使用任何連接。到目前爲止,我已經使用了由Web服務定義的ping()方法,以便客戶端測試連接性。使用CXF測試Web服務連接

這樣做的正確方法是什麼?我不認爲爲了允許測試連接而添加虛擬方法是最好的解決方案。是否有CXF的方式來做到這一點,雖然代理?

感謝

回答

2

你有兩個選擇這樣做:

  1. 我假設你的Web服務是SOAP的Web服務,那麼你就可以發出WSDL文檔一個HTTP HEAD請求。
  2. 在Web服務中實現特殊的「ping」操作(SOAP)。 (也許你已經擁有它)

如果你選擇第一個選項 - 使您可以使用下面的代碼來實現一個HTTP HEAD請求:

public static boolean exists(String webServiceUrl){ 
    try { 
     HttpURLConnection.setFollowRedirects(false); 
     HttpURLConnection connection = (HttpURLConnection) new URL(webServiceUrl).openConnection(); 
     connection.setRequestMethod("HEAD"); 
     return connection.getResponseCode() == HttpURLConnection.HTTP_OK; 
    } catch (Exception e) {  
     return false; 
    } 
} 

如果執行HEAD請求您的Web服務,這意味着Web服務是可訪問的。

+0

感謝您的回答。正如我在問題中所說的,到現在爲止我使用了特殊的ping操作。我喜歡你提出的第一個解決方案,但我想知道是否不使用CXF代理髮出HEAD請求可能是一個問題。使用HttpURLConnection發出HEAD請求只會檢查是否存在與服務的連接。但是,我也想檢查我是否可以通過CXF代理訪問服務,因爲它將成爲客戶用來訪問服務的服務。你知道是否可以通過CXF代理髮出HEAD請求? –