我正在研究Axis1.4并从wsdl生成java客户端。 我正在寻找一个很好的工作示例,它展示了如何记录完整的SOAP请求和响应。我确实看到了几个示例,其中使用了handleRequest,handleResponse方法,但我无法理解如何使用/调用这些处理程序从我的java类捕获请求/响应。
举个例子,以下是我调用服务并获取响应的方法。我试图了解如何在我的代码中捕获完整的SOAP XML请求/响应。
//locate service
FundEditorServiceImplServiceLocator locator = new FundEditorServiceImplServiceLocator();
FundEditorService service = locator.getFundEditorServiceImplPort();//invoke service
FundInfo response = service.getFundInfo(fundInfoSpec);
答案 0 :(得分: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
获取它)并将内容记录到首选的日志记录框架。