Projektuję sekwencję usługi proxy, która zawiera transformację XQuery. Mam problem z odwołaniem do pliku rejestru zawierającego transformację.
Oto kolejność:
<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>
Plik zawierający transformację XQuery jest przesyłany
/_system/config/wsdl/xqueryRequest.xq
I to jest wyjątek, który otrzymuję:
WARN ERROR_DETAIL: org.apache.synapse.Wyjątek Synapse: Nie można wykonać zapytania w org.apache.synapse.mediators.xquery.XQueryMediator.handleException (XQueryMediator.java:627) o org.apache.synapse.mediators.xquery.XQueryMediator.mediate (XQueryMediator.java:130) o org.apache.synapse.mediators.AbstractListMediator.mediate (AbstractListMediator.java:60) o ... Przyczyna: java.lang.NullPointerException w org.wso2.carbon.mediation.registry.WSO2Registry.lookup (WSO2Registry.java:177) o org.apache.synapse.registry.AbstractRegistry.getResource (AbstractRegistry.java:63) o org.apache.synapse.config.SynapseConfiguration.getEntry (SynapseConfiguration.java:693) o org.apache.synapse.core.axis2.Axis2MessageContext.getEntry (Axis2MessageContext.java:194) w org.apache.synapse.mediators.xquery.XQueryMediator.performQuery (XQueryMediator.java:233) o org.apache.synapse.mediators.xquery.XQueryMediator.mediate (XQueryMediator.java:123) ... jeszcze 11
Wyjątek pokazuje NullPointer w WSO2Registry.lookup, więc zakładam, że problem polega na znalezieniu pliku XQuery w rejestrze, ta część:
key = "conf: /wsdl/xqueryRequest.xq"
Dokumentacja pokazuje dwa fragmenty kodu (390 i 391) z transformacją XQuery, ale żadna z nich nie wyjaśnia, jak odwołać się do pliku XQuery.
Pytanie: Jaka powinna być poprawna wartość parametru klucza? Czy muszę korzystać z funkcji „Local Entry”? Jeśli tak, to czy powinienem zdefiniować wartość jako „Inline XML Entry” lub „Inline Text”?
AKTUALIZACJA 03/23/12:
pytanie 2: Być może prostsze pytanie: gdzie należy skopiować / przesłać plik xqueryRequest.xq, gdy ustawię pole klucza mediatora Xquery na key = "xqueryRequest.xq"?
Odpowiedzi:
1 dla odpowiedzi № 1Czy możesz spróbować zapisać xquery jako wpis lokalny i odesłać go z mediatora XQuery. (Proszę spojrzeć na lokalne próbki wejściowe)