0
Here is my spring configuration.

Spring.xml
-------------
<!-- Outgoing SOAP client endpoint -->
    <cxf:cxfEndpoint id="serviceEndpoint" address="${endpointAddress}"
        wsdlURL="${wsdlAddress}" endpointName="${portName}" serviceName="${serviceName}">

        <!-- The interceptors - needed to log the SOAP requests and responses -->
        <!-- They can be removed, when no logging is needed -->
        <cxf:inInterceptors>
            <ref bean="loggingInInterceptor" />
        </cxf:inInterceptors>
        <cxf:outInterceptors>
            <ref bean="loggingOutInterceptor" />
        </cxf:outInterceptors>
        <cxf:outFaultInterceptors>
            <ref bean="loggingOutInterceptor" />
        </cxf:outFaultInterceptors>
        <cxf:inFaultInterceptors>
            <ref bean="loggingInInterceptor" />
        </cxf:inFaultInterceptors>
<cxf:properties>
            <entry key="dataFormat" value="PAYLOAD" />          
        </cxf:properties>
    </cxf:cxfEndpoint>

    <http:conduit name="*.http-conduit">
        <http:tlsClientParameters disableCNCheck="${disableHostnameCheck}">
            <sec:keyManagers keyPassword="${keystorePassword}">
                <sec:keyStore type="JKS" password="${keystorePassword}"
                    file="${keystoreLocation}" />
            </sec:keyManagers>
            <sec:trustManagers>
                <sec:keyStore type="JKS" password="${truststorePassword}"
                    file="${truststoreLocation}" />
            </sec:trustManagers>
            <sec:cipherSuitesFilter>
                <!-- these filters ensure that a ciphersuite with export-suitable or 
                    null encryption is used, but exclude anonymous Diffie-Hellman key change 
                    as this is vulnerable to man-in-the-middle attacks -->
                <sec:include>.*_EXPORT_.*</sec:include>
                <sec:include>.*_EXPORT1024_.*</sec:include>
                <sec:include>.*_WITH_DES_.*</sec:include>
                <sec:include>.*_WITH_AES_.*</sec:include>
                <sec:include>.*_WITH_NULL_.*</sec:include>
                <sec:exclude>.*_DH_anon_.*</sec:exclude>
            </sec:cipherSuitesFilter>
        </http:tlsClientParameters>
        <http:client AutoRedirect="true" Connection="Keep-Alive"
            ReceiveTimeout="${connectionTimeout}" ConnectionTimeout="${connectionTimeout}" />
    </http:conduit>

Here is the Camel route configuration
-------------
<from ...
<to uri="cxf:bean:serviceEndpoint" />

This works well and we can have the soap request/response logged into the log file. Here soap request with soap header is generated by cxf.

我们有办法将soap请求和响应捕获到camel Exchange吗?如果服务呼叫失败,我必须发送附有肥皂请求和响应的电子邮件。已尝试使用本地线程,但似乎无法正常工作。

4

1 回答 1

0

建议:

您在 CXF 拦截器中有它 - 看看它们。

我想,你可以把你的电子邮件发送出去。

org.apache.cxf.phase.AbstractPhaseInterceptor课堂开始——不同阶段有很多不同的课程。

PS乍一看org.apache.cxf.binding.soap.saaj.SAAJInInterceptororg.apache.cxf.binding.soap.saaj.SAAJOutInterceptor可能是很好的候选人......

于 2018-01-17T00:33:49.303 回答