2013-12-09 2 views
0

원래 wsa:To 값이 중간의 URL로 수정되었으므로 다른 ESB를 통해 WSO2ESB에서 백엔드 웹 서비스로 SOAP 메시지 전달이 불가능한 것처럼 보입니다. ESB. 다음 구성이 동작을 보여줍니다WS02 : 주소 끝점이 wsa : WS-Addressing 속성을 덮어 쓴 것으로 보입니다.

<header name="To" value="http://ws.backend.com/service"/> 
<property name="PRESERVE_WS_ADDRESSING" value="true"/> 
<send> 
    <endpoint name="IntermediateESB"> 
     <address uri="http://esb.intermediate.com/proxy"> 
      <enableAddressing/> 
     </address> 
    </endpoint> 
</send> 

SOAP 헤더는 이제 wsa:To 다음이 포함

<wsa:To>http://esb.intermediate.com/proxy</wsa:To> 

address uri 원래 wsa:To 값을 덮어 쓸 것으로 보인다.

백엔드 웹 서비스의 URL이 wsa:To에 있기 때문에 중간 ESB에서는이 작업이 실패합니다. 중간 ESB가 제대로 작동하려면 SOAP 헤더에 포함해야 다음

<wsa:To>http://ws.backend.com/service</wsa:To> 

을이 문제를 해결 할 수 있습니다 어떤 구성?

답변

0

wsa : ReplyTo 헤더 태그에 백엔드 주소를 제공해야합니다. 그래서 귀하의 중급은 백엔드 서비스에 대한 대응을 진행할 것입니다.

<header name="ReplyTo" value="http://ws.backend.com/service"/> 

상세 정보 : http://www.w3.org/Submission/ws-addressing/

+0

이 답변을 주셔서 감사합니다. 그러나 이것은 내가 달성하기를 원하는 것이 아닙니다. –

0

솔루션은 명시 적으로 WS-주소 헤더를 직접 구축해야하고, <enableAddressing/>를 사용하지 않는 것이입니다!

예 : 동일한 값으로 두 번 '액션'을 설정해야

<header xmlns:wsa="http://www.w3.org/2005/08/addressing" name="wsa:To" value="http://ws.backend.com/service"/> 
<header xmlns:wsa="http://www.w3.org/2005/08/addressing" name="wsa:MessageID" expression="get-property('MessageID')"/> 
<header xmlns:wsa="http://www.w3.org/2005/08/addressing" name="wsa:Action" value="http://ws.backend.com/operation"/> 
<header name="To" value="http://esb.intermediate.com/proxy"/> 
<header name="Action" value="http://ws.backend.com/operation"/> 
<property name="PRESERVE_WS_ADDRESSING" value="true" scope="default" type="STRING"/> 
<send> 
    <endpoint name="IntermediateESB"> 
     <address uri="http://esb.intermediate.com/proxy"/> 
    </endpoint> 
</send> 

참고. 'To'를 다른 값으로 사용하고 위의 '주소'끝점 대신 '기본'끝점을 사용할 수 있습니다.

SOAP 메시지는 'http://esb.intermediate.com/proxy'에 게시하고, WS-주소 헤더는 다음과 같습니다

<wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">http://ws.backend.com/service</wsa:To> 
<wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">urn:uuid:52aad1f4-9295-43f6-90c0-304e87922c27</wsa:MessageID> 
<wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://ws.backend.com/operation</wsa:Action> 

'IntermediateESB를'이제 앞으로 'http://ws.backend.com/service'이 SOAP 메시지.

관련 문제