【问题标题】:XQuery transformation with WSO2 ESB使用 WSO2 ESB 进行 XQuery 转换
【发布时间】:2012-03-18 20:56:32
【问题描述】:

我正在设计一个包含 XQuery 转换的代理服务序列。我在引用包含转换的注册表文件时遇到问题。

顺序如下:

<sequence name="MySequence" xmlns="http://ws.apache.org/ns/synapse" >
  <xquery key="conf:/wsdl/xqueryRequest.xq"
          target="..."
          xmlns:ns="http://org.apache.synapse/xsd"  >
     <variable xmlns:ns2="http://..." name="var1" expression="..." type="ELEMENT" />
  </xquery>
  <send>
     <endpoint>...</endpoint>
  </send>
</sequence>

包含 XQuery 转换的文件上传到

/_system/config/wsdl/xqueryRequest.xq

这是我得到的例外:

WARN ERROR_DETAIL : org.apache.synapse.SynapseException:
无法执行查询
org.apache.synapse.mediators.xquery.XQueryMediator.handleException(XQueryMediator.java:627) 在
org.apache.synapse.mediators.xquery.XQueryMediator.mediate(XQueryMediator.java:130) 在
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60) 在
...
引起:java.lang.NullPointerException at
org.wso2.carbon.mediation.registry.WSO2Registry.lookup(WSO2Registry.java:177) 在
org.apache.synapse.registry.AbstractRegistry.getResource(AbstractRegistry.java:63) 在
org.apache.synapse.config.SynapseConfiguration.getEntry(SynapseConfiguration.java:693) 在
org.apache.synapse.core.axis2.Axis2MessageContext.getEntry(Axis2MessageContext.java:194) 在
org.apache.synapse.mediators.xquery.XQueryMediator.performQuery(XQueryMediator.java:233) 在
org.apache.synapse.mediators.xquery.XQueryMediator.mediate(XQueryMediator.java:123)
... 11 更多

异常在 WSO2Registry.lookup 处显示 NullPointer,所以我认为问题在于在注册表中查找 XQuery 文件,这部分:

key="conf:/wsdl/xqueryRequest.xq"

文档显示了两个带有 XQuery 转换的代码 sn-ps(390391),但没有一个解释如何引用 XQuery 文件。

问题:关键参数的正确值应该是多少?我需要使用“本地输入”功能吗?如果是,那么我应该将值定义为“Inline XML Entry”还是“Inline Text”?

2012 年 3 月 23 日更新:

问题 2:也许是一个更简单的问题:当我将 Xquery 中介的关键字段设置为 key="xqueryRequest.xq" 时,我应该在哪里复制/上传 xqueryRequest.xq 文件>?

【问题讨论】:

    标签: wso2 xquery wso2esb esb


    【解决方案1】:

    您能否尝试将您的 xquery 保存为本地条目并从 XQuery 中介器引用它。 (请查看本地条目示例)

    【讨论】:

    • 谢谢。我使用 name:my-xquery value:conf:/wsdl/xqueryRequest.xq 创建 Local Entry > Inlined Text Entry。然后,在 XQuery 中介器中,我设置了 key="my-xquery"。对此进行测试时,我在 #conf:/wsdl# 中查询 XQuery 语法错误期间收到 错误:QName 不能以冒号结尾:{conf:}。我应该将整个 XQuery 作为本地条目吗?
    • 或者,也许是一个更简单的问题:当我将 Xquery 中介的关键字段设置为 key="xqueryRequest.xq" 时,我应该在哪里复制/上传 xqueryRequest.xq 文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    相关资源
    最近更新 更多