解答在CXF google中有一个帖子“请问如何用cxf在请求中加header信息“
由于需要记录访问services的client。需要从SOAP消息中获取Header的数据。具体的方法如下:
【转载地址】http://melin.iteye.com/blog/223643
由于需要记录访问services的client。需要从SOAP消息中获取Header的数据。具体的方法如下:
server:
1.public class LoggingInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
2. Log logger = LogFactory.getLog(LoggingInterceptor.class);
3.
4. private SAAJInInterceptor saajIn = new SAAJInInterceptor();
5.
6. public LoggingInterceptor() {
7. super(Phase.PRE_PROTOCOL);
8. getAfter().add(SAAJInInterceptor.class.getName());
9. }
10.
11. public void handleMessage(SoapMessage message) throws Fault {
12. try {
13. logger.info("记录访问web services日志");
14. SOAPMessage doc = message.getContent(SOAPMessage.class);
15. if (doc == null) {
16. saajIn.handleMessage(message);
17. doc = message.getContent(SOAPMessage.class);
18. }
19. SOAPHeader header = doc.getSOAPHeader();
20. if (header == null) {
21. return;
22. }
23.
24. NodeList nodes = header.getElementsByTagName("proc:user");
25. for(int i=0; i<nodes.getLength(); i++) {
26. System.out.println(nodes.item(i).getLocalName()+"----"+nodes.item(i).getTextContent());
27. }
28.
29. } catch (SOAPException e) {
30. e.printStackTrace();
31. }
32.
33. }
34.}
【转载地址】http://melin.iteye.com/blog/223643