0

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 変換を使用した 2 つのコード スニペット ( 390391 ) が示されていますが、XQuery ファイルの参照方法については説明されていません。

質問: key パラメータの正しい値は何ですか? 「ローカル エントリ」機能を使用する必要がありますか? はいの場合、値を「インライン XML エントリ」または「インライン テキスト」として定義する必要がありますか?

2012 年 3 月 23 日更新:

質問 2 : おそらくもっと簡単な質問: Xquery メディエーターのキー フィールドをkey="xqueryRequest.xq"に設定した場合、xqueryRequest.xq ファイルをどこにコピー/アップロードすればよいですか?

4

1 に答える 1

1

xquery をローカル エントリとして保存し、XQuery メディエータから参照してみてください。(現地エントリーサンプルをご覧ください)

于 2012-03-22T04:47:25.460 に答える