1

WSO2 ESB 4.6.0 および Data Service 機能を備えた MAC OS X - 10.7.5 で作業しています - 4.0.5

Java Java バージョン "1.6.0_37" Java(TM) SE ランタイム環境 (ビルド 1.6.0_37-b06-434-11M3909) Java HotSpot(TM) 64 ビット サーバー VM (ビルド 20.12-b01-434、混合モード)

参照カーソルを使用してストアド プロシージャを実行しようとしています。

これが私のDSです

<data name="RZM">
   <config id="RZS_Data">
      <property name="driverClassName">oracle.jdbc.driver.OracleDriver</property>
      <property name="url">XXXX</property>
      <property name="username">XXXX</property>
      <property name="password">XXXX</property>
      <property name="defaultTransactionIsolation">TRANSACTION_READ_COMMITTED</property>
   </config>
   <query id="TEST" useConfig="RZS_Data">
      <sql>call RT_PROC_GET_VERSION(:in_app_id,:in_version_id,?,?,?)</sql>
      <result element="Results" rowName="Result">
         <element column="app_url" name="app_url" optional="true" xsdType="string"/>
         <element column="out_message" name="OutMessage" optional="true" xsdType="string"/>
         <element column="out_err_message" name="out_err_message" optional="true" xsdType="string"/>
      </result>
      <param name="in_app_id" ordinal="1" sqlType="INTEGER" type="INOUT"/>
      <param name="in_version_id" ordinal="2" sqlType="STRING" type="INOUT"/>
      <param name="compare_from_id" ordinal="3" paramType="ARRAY" sqlType="ORACLE_REF_CURSOR" type="OUT"/>
      <param name="out_message" ordinal="4" sqlType="STRING" type="OUT"/>
      <param name="out_err_message" ordinal="5" sqlType="STRING" type="OUT"/>
   </query>
   <operation name="TOP">
      <call-query href="TEST">
         <with-param name="in_app_id" query-param="in_app_id"/>
         <with-param name="in_version_id" query-param="in_version_id"/>
      </call-query>
   </operation>
</data>

常に次のエラーが発生します

[2013-02-14 18:00:14,400] ERROR - DataService DS Fault Message: Error in 'CallQuery.extractParams', cannot find parameter with type:query-param name:in_version_id
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
Source Data Service:-
Name: RZM
Location: /RZM.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: TOP
Current Params: {}

DS Fault Message: Error in 'CallQuery.extractParams', cannot find parameter with type:query-param name:in_version_id
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
Source Data Service:-
Name: RZM
Location: /RZM.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: TOP
Current Params: {}

    at org.wso2.carbon.dataservices.core.engine.CallQuery.extractParams(CallQuery.java:208)
    at org.wso2.carbon.dataservices.core.engine.CallQuery.executeElement(CallQuery.java:177)
    at org.wso2.carbon.dataservices.core.engine.CallQueryGroup.executeElement(CallQueryGroup.java:111)
    at org.wso2.carbon.dataservices.core.engine.OutputElement.execute(OutputElement.java:89)
    at org.wso2.carbon.dataservices.core.description.operation.Operation.execute(Operation.java:71)
    at org.wso2.carbon.dataservices.core.engine.DataService.invoke(DataService.java:548)
    at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.execute(DSOMDataSource.java:99)
    at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.serialize(DSOMDataSource.java:110)
    at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691)
    at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:562)
    at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875)
    at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)
    at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)
    at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:435)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:227)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:45)
    at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:434)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:219)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
[2013-02-14 18:00:14,402] ERROR - PassThroughHttpSender Failed to submit the response
org.apache.axis2.AxisFault: DS Fault Message: Error in 'CallQuery.extractParams', cannot find parameter with type:query-param name:in_version_id
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
Source Data Service:-
Name: RZM
Location: /RZM.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: TOP
Current Params: {}

    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:435)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:227)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:45)
    at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:434)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:219)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
Caused by: javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'CallQuery.extractParams', cannot find parameter with type:query-param name:in_version_id
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
Source Data Service:-
Name: RZM
Location: /RZM.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: TOP
Current Params: {}

    at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.execute(DSOMDataSource.java:105)
    at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.serialize(DSOMDataSource.java:110)
    at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691)
    at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:562)
    at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875)
    at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)
    at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)
    at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
    ... 12 more
[2013-02-14 18:00:14,403] ERROR - ServerWorker Error processing POST request for : /services/RZM.SOAP12Endpoint/TOP
org.apache.axis2.AxisFault: Failed to submit the response
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.handleException(PassThroughHttpSender.java:496)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:229)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:45)
    at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:434)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:219)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.apache.axis2.AxisFault: DS Fault Message: Error in 'CallQuery.extractParams', cannot find parameter with type:query-param name:in_version_id
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
Source Data Service:-
Name: RZM
Location: /RZM.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: TOP
Current Params: {}

    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:435)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:227)
    ... 10 more
Caused by: javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'CallQuery.extractParams', cannot find parameter with type:query-param name:in_version_id
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
Source Data Service:-
Name: RZM
Location: /RZM.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: TOP
Current Params: {}

    at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.execute(DSOMDataSource.java:105)
    at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.serialize(DSOMDataSource.java:110)
    at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691)
    at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:562)
    at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875)
    at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)
    at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)
    at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
    ... 12 more

なぜこのエラーが発生するのかわかりません。「TryIt」サービスでDSを実行しようとしています。入力XMLは次のとおりです

<body>
   <p:TOP xmlns:p="http://ws.wso2.org/dataservice">
      <!--Exactly 1 occurrence-->
      <p:in_app_id>1296</p:in_app_id>
      <!--Exactly 1 occurrence-->
      <p:in_version_id>2.2</p:in_version_id>
   </p:TOP>
</body>

ストアド プロシージャの定義は次のように始まります。

     create or replace procedure RT_PROC_GET_VERSION (in_app_id                in number,
                                                    in_version_id           in varchar2,
                                                    out_version_detail      out sys_refcursor,
                                                    out_message             out varchar2,
                                                    out_err_message         out varchar2)
    is
    begin
            open out_version_detail for
            select
                    app_url, switch_board_url, version
.
.

end RT_PROC_GET_VERSION;

助けていただけますか?ありがとうアビジット

4

3 に答える 3

2

私もそれと戦ってきましたが、コードのデバッグに時間を費やし、MessageContextのリクエストの理由が「null」であることがわかりました。したがって、Axis2 トランスポート構成が影響したという事実につながります。実際、WSO2 ESB 4.6.0 には、メッセージ本文を作成しないデフォルトのパススルー HTTP トランスポートが付属しています。そのため、サービスに渡したものが機能しませんでした。したがって、それを機能させるには、別の http トランスポート (たとえば、 find および uncomment org.wso2.carbon.core.transports.http.HttpTransportListener)を再度有効にする必要がありますrepository/conf/axis2/axis2.xml 。これにより、パススルーを無効にする代わりに問題が解決するはずです。異なるポートでトランスポートを並べて構成する方法があるかもしれません (タスクは後で行います)。

通常、異なるタスクを解決し、特定の構成が必要になるため、ESB と DSS を別々に保持する必要があります。

于 2013-02-28T10:21:55.707 に答える
0

この呼び出しを試してください RT_PROC_GET_VERSION(?,?,?,?,?)

入力マッピング オプションでは、序数を含むすべての in および out パラメータをリストします。序数は疑問符に基づきます。そして、上記のクエリに存在する疑問符は、ストアド プロシージャの存在と同じである必要があります。この後、ストアド プロシージャから、受信するデータがそれらを一覧表示する場合、out パラメータ

例: 結果セットが id とアドレスを持っている場合、これら 2 つを出力マッピングにリストします。注:入力マッピング名は、ストアド プロシージャに存在するものと同じである必要があります。

于 2013-04-15T09:34:10.817 に答える
0

アビジット、

「名前付きパラメーター」と「序数」(数字によるパラメーターの順序付け) を同時に使用すると、パラメーターの抽出と割り当てで問題が発生する可能性があります。「名前付きパラメーター」オプションまたは「序数」(2 つのうち 1 つだけ) のいずれかを均一に使用して、すべての入力パラメーター マッピングを割り当てることをお勧めします。それは問題を解決するでしょう。

お役に立てれば!

于 2013-02-16T03:20:50.027 に答える