1

我使用 Camel 作为客户端和 Web 服务之间的代理。目的是丰富客户端发送的传入 SOAP 请求,然后再将其转发到真正的Web 服务。

我想向生产者端点(真实 Web 服务的端点)注册一个名为sessionJAXWSHandler的 JAX-WS(协议)处理程序,但它似乎没有选择它。如果我在传入的 enpoint 上配置相同的处理程序,它会注册处理程序;我可以看到调试。我相信这里描述了同样的问题,但从未解决。

我基于 Spring 的 Camel 配置

用于处理传入 SOAP 消息的 CXF 端点 - 处理程序注册得很好:

<cxf:cxfEndpoint id="hotelAvailabilityService"
                 address="/HotelAvailabilityService"
                 serviceClass="com.booking.hotel.availability.HotelAvailability"
                 wsdlURL="wsdl/MyHotelAvailabilityProxyService.wsdl">
    <cxf:handlers>
        <ref bean="sessionJAXWSHandler"/>
    </cxf:handlers>
    <cxf:properties>
        <entry key="dataFormat" value="PAYLOAD" />
        <entry key="schema-validation-enabled" value="false" />
    </cxf:properties>
</cxf:cxfEndpoint>

传出请求的 CXF 端点(我看不到任何调试,所以我假设处理程序尚未注册。没有错误消息):

<cxf:cxfEndpoint id="realHotelAvailabilityService"
                 address="https://com.company.webservice/availabilityws"
                 wsdlURL="wsdl/hotelbooking.wsdl"
                 loggingFeatureEnabled="true"
                 >
    <cxf:handlers>
        <ref bean="sessionJAXWSHandler"/>
    </cxf:handlers>
    <cxf:inInterceptors>
        <ref bean="unZip"/>
    </cxf:inInterceptors>
    <cxf:inFaultInterceptors>
        <ref bean="unZip"/>
    </cxf:inFaultInterceptors>
    <cxf:properties>
        <entry key="dataFormat" value="PAYLOAD" />
        <entry key="schema-validation-enabled" value="false" />
    </cxf:properties>
</cxf:cxfEndpoint>
4

0 回答 0