두 개의 타사 제품간에 발생하는 요청을 처리 할 수 있도록 WSO2 ESB를 사용하고자합니다.wso2 esb 프록시 서비스 wsa : 동작 헤더가 잘못되었습니다.
발신 클라이언트를 변경할 수 없습니다. 웹 서비스를 변경할 수 없습니다.
클라이언트가 ESB에서 유효하지 않은 것으로 간주되는 SOAP 헤더와 함께 요청을 보냅니다. 웹 서비스는 클라이언트에서 직접 호출을받습니다. ESB를 거치지 않고 ESB에 요청이 들어오고 ESB가 엔드 포인트를 호출하지 않고 클라이언트에게 응답을 보냅니다. 디버그 추적은 헤더에 포함 된 작업 태그가 필수 표준을 준수하지 않는다고 처리기가 결정한다는 것을 나타냅니다. 우리는 아래와 같은 헤더를 만들 경우
TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.context.MessageContext} - SoapAction is() {org.apache.axis2.context.MessageContext}
TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.builder.BuilderUtil} - char set encoding set from default =UTF-8 {org.apache.axis2.builder.BuilderUtil}
TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.handlers.addressing.AddressingInHandler} - No headers present corresponding to http://www.w3.org/2005/08/addressing {org.apache.axis2.handlers.addressing.AddressingInHandler}
TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.handlers.addressing.AddressingInHandler} - http://schemas.xmlsoap.org/ws/2004/08/addressing headers present in the SOAP message. Starting to process ... {org.apache.axis2.handlers.addressing.AddressingInHandler}
TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.client.Options} - getAction() from [email protected] {org.apache.axis2.client.Options}
TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.handlers.addressing.AddressingInHandler} - The wsa:Action header is present but its contents are empty. This violates rules in the WS-A specification. The SOAP node that sent this message must be changed. {org.apache.axis2.handlers.addressing.AddressingInHandler}
TID: [0] [ESB] [2014-12-24 10:51:06,481] WARN {org.apache.axis2.addressing.AddressingFaultsHelper} - triggerActionNotSupportedFault: messageContext: [MessageContext: logID=d241a239ecfe36148a4f055b69d082a8d2b599e9cd6d6ba7] problemAction: {org.apache.axis2.addressing.AddressingFaultsHelper}
TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.i18n.ProjectResourceBundle} - org.apache.axis2.addressing.i18n.resource::handleGetObject(spec.FAULT_ACTION_NOT_SUPPORTED_REASON) {org.apache.axis2.i18n.ProjectResourceBundle}
TID: [0] [ESB] [2014-12-24 10:51:06,481] ERROR {org.apache.synapse.transport.passthru.util.RelaySecuirtyMessageBuilderDispatchandler} - Error while executing the message at relaySecurity handler {org.apache.synapse.transport.passthru.util.RelaySecuirtyMessageBuilderDispatchandler}
org.apache.axis2.AxisFault: The [action] cannot be processed at the receiver.
at org.apache.axis2.addressing.AddressingFaultsHelper.triggerAddressingFault(AddressingFaultsHelper.java:373)
at org.apache.axis2.addressing.AddressingFaultsHelper.triggerActionNotSupportedFault(AddressingFaultsHelper.java:336)
at org.apache.axis2.handlers.addressing.AddressingInHandler.extractActionInformation(AddressingInHandler.java:539)
at org.apache.axis2.handlers.addressing.AddressingInHandler.extractAddressingInformation(AddressingInHandler.java:249)
클라이언트에 의해 생성 된 요청,
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<wsa:Action/>
<wsa:MessageID>urn:uuid:926dbf87-1f59-4fff-b1e9-341286567f8c</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://blahblahblah:8280/services/PassTrhuProxy1</wsa:To>
</soap:Header>
<soap:Body>
...
</soap:Body>
</soap:Envelope>
우리는 SOAPUI에 요청을 생성하여 몇 가지 테스트를 수행 한 다음 헤더를 가지고, 우리는을 얻을 수 있습니다 서비스로부터의 적절한 응답.
<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
나는 ESB가 메시지를 서비스에 전달하는 방법을 모른다. 방법이 있습니까?
궁금하다 1. 내가 WSO2 ESB에서 유효성 검사 오류를 무시하도록 조정할 수 있도록 메시지를 전송할 수있는 방법이 있습니까? 2. 유효성 검사를 완전히 끌 수있는 방법이 있습니까? 3. WSO2 ESB를 설치하여이 시나리오를 즉시 처리 할 수 있습니까? 소스 코드 변경이 필요합니까? 내 질문에 고려에 대한
감사합니다 ....
I 이것이 원래의 이유라고 생각하면 SOAP 작업을 보내지 않을 것입니다. 은 null입니다. ESB로 보내기 전에 속성을 설정해보십시오. 어느 순간에 오류가 발생합니까? 요청이 프록시/시퀀스에 충돌합니까? 그렇지 않으면 전송 수준에서 실패합니까? –
Ratha
Ratha를 읽어 주셔서 감사합니다. 불행히도 클라이언트 호출을 변경할 수 없습니다. –
어느 시점에서 오류가 발생합니까? 요청이 프록시/시퀀스에 충돌합니까? 그렇지 않으면 전송 수준에서 실패합니까? – Ratha