kiw*_*rog 9 java cxf outputstream interceptor
我正处于创建输出拦截器的阶段,我从SOAP消息中获取了一个OuputStream.但是如何在将SOAP信封发送到端点之前修改它呢?我想删除一些xml元素.
一种方法是获取文档并通过 XSLT 转换运行它。
您可以通过调用来获取拦截器的handleMessage中的文档
@Override
public void handleMessage(SoapMessage message) throws Fault{
SOAPMessage saaj = message.getContent(SOAPMessage.class);
Document doc = saaj.getSOAPPart(); // This actually returns a SOAPPart instance but it does implement the w3c Document interface
//play around with the document, doc is a reference so any changes made to that instance
//will be forwarded to the rest of the chain
}
Run Code Online (Sandbox Code Playgroud)
但请注意,如果您具有必须对肥皂内容执行 XML 签名之类的安全性,则必须确保拦截器在应用签名之前发生,否则将使它们无效。
要调整拦截器的时间,您可以指定它将运行的阶段。如果它们在同一阶段执行,CXF 还应该遵循您配置它们的顺序。
但不要相信我的话...检查这些以获取更多信息
通过 CXF 源代码进行调试也对我理解它的工作原理有很大帮助
- - 编辑 - -
(谢谢丹尼尔:-)
为此,您需要在堆栈中配置 SAAJOutInterceptor。您可以手动添加它,也可以简单地将其作为拦截器的一部分。 这是一个拦截器的示例,它几乎可以满足您的要求。
归档时间: |
|
查看次数: |
10752 次 |
最近记录: |