如何正确配置Mule CXF代理客户端



嗨,我正在玩SOAP请求,我在CXF代理客户端时遇到了麻烦。我基本上是向HTTP端点发送SOAP请求,删除肥皂信封,然后尝试将其与代理客户端重新添加。

我希望能得到没有充分的响应(因为我要删除WSSE标题)。

但是,我得到以下SOAP响应:"响应代码500映射为失败。消息有效负载类型:BufferInputStream"并且控制台记录以下(请注意,这仅仅是它的开始)

WARN 2015-05-13 12:38:28,886 [[[SandBox2] .http_listener_configuration.worker.01] org.apache.cxf.phase.phase.phasephasecteptorceptor.phasecteptorchain:Interpector:{org/} proxyservice#{http://support.cxf.module.mule.org/} Invoke有例外,立即放松org.apache.cxf.interceptor.fault:响应代码500映射为故障。消息有效负载类型:BufferInputStream at org.mule.module.cxf.transport.muleuniversalconduit $ 2.Handlemessage(muleuniversalconduit.java:194) at org.apache.cxf.phase.phaseinterceptorchain.dointercept(sepaseinterceptorchain.java:263)〜[cxf-api-2.5.9.jar:2.5.9] atrg.apache.cxf.endpoint.clientimpl.doinvoke(clientimpl.java:531)〜[cxf-rt-core-2.5.9.9.jar:2.5.9] atorg.apache.cxf.endpoint.clientimpl.invoke(clientimpl.java:462)〜[cxf-rt-core-2.5.9.9.jar:2.5.9]

这是我的流程

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.6.1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd">
    <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8086" doc:name="HTTP Listener Configuration"/>
    <http:request-config name="HTTP_Request_Configuration" host="localhost" port="8080" basePath="my-app/RetrieveAct.svc" doc:name="HTTP Request Configuration"/>
    <flow name="myFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <logger message="message received #[payload] " level="INFO" doc:name="Logger"/>
        <cxf:proxy-service namespace="PfPolicyService"  payload="body" doc:name="CXF"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <cxf:proxy-client payload="body" doc:name="CXF"/>
        <response>
            <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        </response>
        <http:request config-ref="HTTP_Request_Configuration1" path="http://localhost:8080/my-app/RetrieveAct.svc" method="POST" doc:name="HTTP">
            <http:request-builder>
                <http:header headerName="soapAction" value="getUserAcct"/>
            </http:request-builder>
        </http:request>
    </flow>
</mule>

谁能解释我在做错什么以及如何纠正问题?

谢谢

您遇到的问题是因为您对肥皂请求的修改最终以无效的肥皂请求而最终出现,因此服务器无法解析它,并且它正在返回500 HTTP状态代码。

您可以使用CXF的日志记录拦截器来检查您发送的内容的最终结果。

您的m子流对我来说似乎很oke,代理服务可能会出于各种原因而爆炸。

向代理客户端添加日志记录拦截器,并查看是否可以查明问题:

 <cxf:proxy-client payload="body">
    <cxf:inInterceptors>
        <spring:bean class="org.apache.cxf.interceptor.LoggingInInterceptor">
            <spring:property name="prettyLogging" value="true" />
        </spring:bean>
    </cxf:inInterceptors>
    <cxf:outInterceptors>
        <spring:bean class="org.apache.cxf.interceptor.LoggingOutInterceptor">
            <spring:property name="prettyLogging" value="true" />
        </spring:bean>
    </cxf:outInterceptors> 
 </cxf:proxy-client>

或或者,使用TPCMON捕获网络流量。

在进行集成测试之前,首先设置服务模拟和正确的测试案例将是一个很好的理智检查。

相关内容

  • 没有找到相关文章

最新更新