2013-01-18 108 views
2

我在Eclipse中使用嚮導將JAX-WS處理程序添加到我的項目中。它實現SOAPHandler。JAX-WS處理程序 - handleMessage未運行

然後,在Project Explorer中,在下的JAX-WS Web服務>服務端點接口> MyServiceSoap中,我使用了配置處理程序的選項。我指出我的Handler類和新文件是在MyServiceSoap.java文件所在的同一個文件夾中創建的handler-chain.xml。

我看着我的MyServiceSoap.java,我看到聲明@HandlerChain(文件=「處理-chain.xml」)

所以,據我所知,所有的作品都很到位。但是,當我嘗試調用此服務時,handleMessage永遠不會被調用。

這裏是我的handleMessage代碼:

@Override 
public boolean handleMessage(SOAPMessageContext context) { 
     SOAPMessage msg = context.getMessage(); 
     return true; 
} 

我設置斷點在此方法,希望我將能夠看到被髮送到遠程Web服務消息的內容。 我還必須注意到,當我嘗試使用此服務時,出現錯誤「WebServiceException:頭中沒有內容類型」。所以,也許,這個錯誤發生在handleMessage有機會運行之前。

如果有人能爲這個主題提供更多的燈光,我將不勝感激。謝謝。

+0

你是正確的。這個請求從來沒有像處理程序那樣做,更不用說web服務impl本身。無論你使用這個服務,它都不會設置Content-type頭(應該是application/xml) – kolossus

回答

2

我有同樣的問題,但我的客戶端是由maven使用jaxws:wsimport生成的。我的處理程序從未被調用,因此該解決方案是宣佈@HandlerChain(file="MyHandlerFile.xml"),XML文件(在這種情況下)應該在同一個包哪裏是你的類,例如在裏面:

com.my.package.MyClientWS.java 
com.my.package.MyHandlerFile.xml 

聲明註釋:

@WebService(.....) 
@HandlerFile(file="MyHandlerFile.xml")<br> 
public class MyClientWS extends Service .... 


處理程序鏈文件:

<?xml version="1.0" encoding="UTF-8"?> 
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"> 
    <handler-chain> 
    <handler> 
     <handler-name>package.to.my.MyHandler<handler-name> 
     <handler-class>package.to.my.MyHandler</handler-class> 
    </handler> 
    </handler-chain> 
</handler-chains> 
相關問題