2015-10-20 91 views
0

我正在使用Axis1.4並從wsdl生成java客戶端。 我正在尋找一個很好的工作示例,其中顯示瞭如何記錄完整的SOAP請求和響應。我看過幾個例子,其中使用了handleRequest,handleResponse方法,但我未能理解如何從我的java類中使用/調用這些處理程序來捕獲請求/響應。Axis 1:如何記錄請求和響應xml

例如,以下是我如何調用服務並獲取響應。我想了解如何在代碼中捕獲完整的SOAP XML請求/響應。

//locate service 

FundEditorServiceImplServiceLocator locator = new FundEditorServiceImplServiceLocator(); 

FundEditorService service = locator.getFundEditorServiceImplPort();//invoke service 

FundInfo response = service.getFundInfo(fundInfoSpec); 
+0

此鏈接具有完整的實現 - https://developervisits.wordpress.com/2017/06/20/apache-axis-logging-of-soap-requestresponse-programmatically/ – Rajeev

回答

0

你必須使用處理程序。

HandlerRegistry hr = locator.getHandlerRegistry(); 
List<HandlerInfo> handlerChain = hr.getHandlerChain((QName) locator.getPorts().next()); 

HandlerInfo hi = new HandlerInfo(); 
hi.setHandlerClass(MyHandlerClass.class); 
handlerChain.add(hi); 

對於每個處理程序類,您必須生成一個HandlerInfo對象。將它註冊在鏈上,它應該可以工作。 MyHandlerClass應該是javax.xml.rpc.handler.GenericHandler的子類。您必須實施handleResonse()和/或handleRequest()。您可以調查SOAPMessage(從方法的參數MessageContext中獲取)並將其記錄到您的首選日誌框架。