首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wso2 esb代理服务wsa:操作标头无效

wso2 esb代理服务wsa:操作标头无效
EN

Stack Overflow用户
提问于 2014-12-24 11:06:59
回答 1查看 1.8K关注 0票数 0

我希望开始使用WSO2企业服务总线来允许操作发生在两个第三方产品之间的请求。

我无法更改调用客户端。我无法更改web服务。

客户端正在发送一个带有SOAP标头的请求,ESB认为该标头无效。web服务直接接受来自客户端的调用。它不是通过ESB传递的,我看到只有请求进入ESB,响应返回给客户端,而ESB没有调用端点。调试跟踪表明,处理程序确定标头中包含的操作标记不符合所需的标准。

代码语言:javascript
复制
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 org.apache.axis2.client.Options@53781b2c {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)

客户端创建的请求具有以下标头

代码语言:javascript
复制
<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中创建请求进行了一些测试,如果我们创建一个具有如下所示的头的请求,我们可以从服务获得适当的响应。

代码语言:javascript
复制
 <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">

我不知道如何让ESB将消息传递给服务。有什么办法吗?

我想知道1.有没有办法让ESB忽略验证错误,这样我就可以将消息传递到中介器中,以便对其进行操作? 2.有没有办法完全关闭验证? 3.是否可以将WSO2 WSO2设置为开箱即用来处理这种情况?需要更改源代码吗?

谢谢你考虑我的问题..。

EN

回答 1

Stack Overflow用户

发布于 2014-12-28 22:24:09

WS-Addressing验证有时很烦人,但您可以通过将以下行添加到axis2.xml配置中来关闭它:

代码语言:javascript
复制
<parameter name="disableAddressingForInMessages" locked="false">true</parameter> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27630908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档