我想在我的 bean 设置中记录传入的 SOAP,但我不知道如何拦截请求的正文。
我发现如果我将 ?dataFormat=MESSAGE 添加到我的 CxfEndpoint,它会显示 xml 输入,但会弄乱提供 addBookTransformer 的 dataFormat。
<from uri="cxf:bean:CxfEndpoint?dataFormat=MESSAGE" />
这是我的设置
<cxf:cxfEndpoint id="CxfEndpoint"
address="/host/addBook"
endpointName="a:addBookEndpoint"
serviceName="a:addBookService"
wsdlURL="wsdl/add-book.wsdl"
serviceClass="com.library.AddBookEndpoint"
xmlns:a="http://library.com"/>
<bean id="addBookTransformer" class="com.library.bookshelf.AddBookTransformer"/>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="addBook" streamCache="true">
<from uri="cxf:bean:CxfEndpoint" />
<process ref="addBookTransformer" />
<log message="${body}"/>
</route>
</camelContext>
有没有办法拦截并记录传入的post请求数据?
最佳答案
你可以为此进行窃听
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="addBook" streamCache="true">
<from uri="cxf:bean:CxfEndpoint" />
<process ref="addBookTransformer" />
<wireTap uri="direct:tap"/>
<to uri="mock:result"/>
<log message="${body}"/>
</route>
</camelContext>
交换的副本将发送至 direct:tap
,您可以根据需要进行读取和处理。
例如,我们可以像这样记录消息。您还可以添加另一个处理器。
<route id="wiretapped" streamCache="true">
<from uri="direct:tap" />
<log message="${body}"/>
</route>
这是documentation为此。
关于java - 拦截传入消息并将其记录到端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58709154/