我有一个带有4个WebMethods的Wildfly 8.1.0 WebService。
我需要记录SOAP消息(业务需求)
我注入了有效的WebServiceContext
@Resource
private WebServiceContext wsContext;
我可以得到org.apache.cxf.jaxws.context.WrappedMessageContext:
WrappedMessageContext wrappedMessageContext = (WrappedMessageContext) wsContext.getMessageContext();
以及org.apache.cxf.message.Message:
Message message = wrappedMessageContext.getWrappedMessage();
但不是SOAP消息。
有人有想法吗?
最佳答案
您正在检索错误/不必要的消息上下文。您应该拥有的是SOAPMessageContext
,从中可以轻松获取SOAPMessage
。您应该改为:
SOAPMessageContext msgCtxt = (SOAPMessageContext) wsContext.getMessageContext();
SOAPMessage soapMsg = msgCtxt.getMessage(); //gotten your SOAP message
//log your message
编辑:
根据您的评论,您似乎正在注入特定于CXF的
MessageContext
(出于明显的可移植性问题,可能不应该这样做)。org.apache.cxf.binding.soap.SoapMessage soapMessage = (org.apache.cxf.binding.soap.SoapMessage)wrappedMessage.getWrappedMessage(); //continuing from your current code