【问题标题】:WSO2 ESB read OperationName property in a mediatorWSO2 ESB 在中介中读取 OperationName 属性
【发布时间】:2019-10-09 16:56:46
【问题描述】:

我想在用 Java 编写的自定义中介中读取属性 OperationNameTo。用这行代码

(String) context.getProperty("OperationName")(String) context.getProperty("To")

结果我得到了null。我怎样才能得到正确的值?我尝试了大多数属性上下文,但除了null,我什么也没得到。

【问题讨论】:

  • 通常这是访问这些属性的方式,因为 OperationName 和 To 是突触范围内的属性,它们应该在突触消息上下文 (docs.wso2.com/display/EI650/…) 中可用。您能否提供有关您的方案的更多信息?您是否尝试调用代理?使用的中介是什么?是多租户环境吗?
  • @ThishaniLucas,这是一个独立的环境,没有多租户,我正在尝试从自定义中介中的 java 代码访问这些值。该服务很简单,并且在 inSequence 中只有这个中介。
  • 你是在使用类调解器吗?
  • @SaadSahibjan 是的

标签: wso2 wso2esb wso2ei


【解决方案1】:

看起来属性“To”和“OperationName”只能通过“get-property”函数访问,而不是在消息上下文[1]中真正设置。为了满足您的要求,有两种选择。

选项 1

在您的类调解器中,您可以使用这些行来提取 To 和 OperationName,就像在方法 [2] 中一样。

String opName = ((Axis2MessageContext) context).getAxis2MessageContext().getAxisOperation().getName().getLocalPart();
String to = context.getTo().getAddress();

PS : 请处理 NPE。

选项 2

在使用此类中介器的代理服务或序列中,在使用它之前,定义两个属性,如下所示。

<property expression="get-property('To')" name="To"/>
<property expression="get-property('OperationName')" name="OperationName"/>

那么,您可以像您提到的那样在类中介器中访问这些属性。

(String) context.getProperty("OperationName") and (String) context.getProperty("To")

【讨论】:

  • 选项 1 是我需要的。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
相关资源
最近更新 更多