나는 뮬 3.2.0과 을 사용하고 있습니다. 나는 뮬 흐름 (여기에 존재하지 않음)에 soap-request를 보내는 자바 클래스에서 muleclient.send 메소드를 호출합니다. 이것은 http로 보내집니다 요청을 수신하고 프록시 패턴을 사용하여 내 db에 기록하고 Dispatcher 변환기가있는 "ServiceFlow"로 전파합니다. 하나의 객체를 전달하기 위해 MuleClient.send (String url, Object payload, Map mapProperties) 메소드 호출을 사용하는 Java 클래스 페이로드 배열의 끝점으로 이동합니다. 그런 다음 cxf : jax-ws-client에 의해 처리되고 db에 다시 기록되며 Dispatcher의 또 다른 인스턴스 (수신 페이로드가 다시 Object [] 유형 임)로 전송됩니다. 거기서 나는 서비스 호출을하는 http endpoint를 가지고있다. 이 부분은 괜찮습니다. 그러나 응답 수신시 문제가 나타납니다. 나는 Test1 (2,3,4) 트랜스포머를 내 플로우 (단지 System.out.println())에서 호출 체인을 인쇄하도록했는데, 이상한 시퀀스로 호출되는 것을 보았다. 나는 그것을 가지고있다. 1,3과 마찬가지로 TestTransformer (sysouter이기도 함)처럼 메인 플로우 "Service flow"의 호출자에서 "NullPayload"오류를 얻은 다음 Test 4와 Test 2 out을 수신합니다. "1Proxy"패턴의 responseTransformer-refs는 "ServiceProxy"에서처럼 무시됩니다. 나는 지금 일주일 동안 해결책을 찾고 있었고 찾을 수 없었다. 디버깅에서 "TestTransformer"라는 트랜스포머가 예상 된 페이로드 (Object [])를 가지고 있지만 클래스 호출자에서 수신하면 "NullPayload"로 표시된다는 것을 알 수 있습니다. 이제는 내 끝점 중 하나에 ref 대신 path 요소가있는 것을 볼 수 있습니다.이 경우 흐름에 어떤 영향도 미치지 만 확인하지는 않습니다. 또한 "응답"블록을 사용하여 예상대로 내 플로우가 실행되도록했습니다. 어떤 제안도 감사합니다.뮬 이상한 흐름 동작
<http:endpoint name="httpService" address="${service.soap}" exchange-pattern="request-response" responseTimeout="${timeout}" />
<vm:endpoint name="vmService" path="vmService" exchange-pattern="request-response"/>
<pattern:web-service-proxy
name="ServiceProxy"
inboundEndpoint-ref="httpService"
transformer-refs="to-string logging"
responseTransformer-refs="to-string logging"
outboundEndpoint-ref="vmService" />
<flow name="ServiceFlow" >
<inbound-endpoint ref="vmService"/>
<cxf:jaxws-service serviceClass="pkg.ServiceImpl" wsdlLocation="${service.wsdl}" enableMuleSoapHeaders="false" validationEnabled="true"/>
<custom-transformer class="pkg.Dispatcher">
<spring:property name="vmFlowPath" value="vm.logService"/>
</custom-transformer>
<custom-transformer name="TestTransformer" class="pkg.TestTransformer"/>
</flow>
<vm:endpoint name="vm1In" path="vm1In" exchange-pattern="request-response"/>
<vm:endpoint name="vm1Out" path="vm1Out" exchange-pattern="request-response"/>
<custom-transformer name="arrayGenerator" class="pkg.ArrayGenerator"/>
<custom-transformer name="objectExtractor" class="pkg.ObjectExtractor"/>
<custom-transformer name="faultChecker" class="pkg.FaultChecker"/>
<custom-transformer name="objectLogging" class="pkg.ObjectLogger">
<pattern:web-service-proxy
name="1Proxy"
inboundEndpoint-ref="vm1In"
transformer-refs="arrayGenerator objectLogging"
responseTransformer-refs="objectLogging objectExtractor faultChecker"
outboundEndpoint-ref="vm1Out" />
<flow name="logService">
<vm:inbound-endpoint path="vm.logService exchange-pattern="request-response"/>
<custom-transformer class="Test1"/>
<vm:outbound-endpoint ref="vm1In">
<cxf:jaxws-client
serviceClass="pkg.ServiceImpl"
operation="import"
enableMuleSoapHeaders="false"/>
<object-to-string-transformer/>
</vm:outbound-endpoint>
<object-to-xml-transformer>
<xm:xml-to-object-transformer returnClass="pkg.WSResponseClass"/>
<custom-transformer class="Test2"/>
</flow>
<flow name="DispatcherToServiceFlow">
<custom-transformer class="Test3"/>
<vm:inbound-endpoint path="vm1.Out"/>
<custom-transformer class="pkg.Dispatcher">
<spring:property name="vmFlowPath" value="vm.import"/>
</custom-transformer>
</flow>
<flow name="import">
<vm:inbound-endpoint path="vm.import" exchange-pattern="request-response"/>
<http:outbound-endpoint address="${importService}" responseTimeout="${timeout}" exchange-pattern="request-response" />
<object-to-string-transformer/>
<custom-transformer class="Test4"/>
</flow>
추가 정보를 추가 하시려면 질문에 편집 링크를 사용하십시오. 답변 게시 버튼은 질문에 대한 완전한 대답을 위해서만 사용되어야합니다. – Rohan
하지만 이것이 "이상한 흐름의 행동"에 대한 완전한 대답이라면 무엇입니까? 문제는 끝점을 잘못 인용 한 것입니까? – secario