使用WSO2 ESB进行XQuery转换

时间:2012-03-18 20:56:32

标签: wso2 xquery wso2esb esb

我正在设计一个包含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: 
Unable to execute the query at 
org.apache.synapse.mediators.xquery.XQueryMediator.handleException(XQueryMediator.java:627) at
org.apache.synapse.mediators.xquery.XQueryMediator.mediate(XQueryMediator.java:130) at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60) at
...
Caused by: java.lang.NullPointerException at
org.wso2.carbon.mediation.registry.WSO2Registry.lookup(WSO2Registry.java:177) at 
org.apache.synapse.registry.AbstractRegistry.getResource(AbstractRegistry.java:63) at
org.apache.synapse.config.SynapseConfiguration.getEntry(SynapseConfiguration.java:693) at
org.apache.synapse.core.axis2.Axis2MessageContext.getEntry(Axis2MessageContext.java:194) at
org.apache.synapse.mediators.xquery.XQueryMediator.performQuery(XQueryMediator.java:233) at 
org.apache.synapse.mediators.xquery.XQueryMediator.mediate(XQueryMediator.java:123) 
... 11 more 

异常显示了WSO2Registry.lookup中的NullPointer,所以我假设问题在于在注册表中找到XQuery文件,这一部分:

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

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

问题:关键参数的正确值应该是什么?我是否需要使用“本地输入”功能?如果是,那么我应该将值定义为“内联XML条目”或“内联文本”吗?

更新03/23/12:

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

1 个答案:

答案 0 :(得分:1)

您可以尝试将xquery保存为本地条目,并从XQuery介体中引用它。 (请查看当地的参赛作品样本)