0

Web サービスを作成し、サーバー側の Jaggery.js スクリプトから問題なく要求を送信できました。次に、WSO2 ESB 内に WSDL プロキシ サービスを作成し、「Try it!」を使用してテストしました。特徴。

サーバーサイド スクリプトを元の Web サービスから ESB 内のプロキシにリダイレクトした後、システム ログに次のエラーが記録されました。

Operation not found のエンドポイント参照 (EPR) は /services/BpmAdderProcessProxy.BpmAdderProcessProxyHttpSoap11Endpoint で、WSA Action = urn:anonOutInOpResponse です。この EPR が以前に到達可能であった場合は、サーバー管理者に連絡してください。

何が起こっているのかを詳しく見るために、ESB の「SOAP Message Tracer」をアクティブにしました。突然、サーバーサイド スクリプトが ESB プロキシ経由で Web サービスにアクセスできるようになりました。次に、「SOAP Message Tracer」を無効にすると、エラー メッセージが再び表示されました。私のサーバーサイドスクリプトは正しいですか? または、デバッグ ツールはデバッグされたコードの動作を変更しますか?

私は JavaScript 開発者です。実はJaggeryやUESは私のような人をターゲットにしています。Java コードの内部を調べることは想定されていませんね。JavaScript 開発者が WSO2 UES と Jaggery について議論するフォーラムはありますか?

私のサーバー側のコードは次のとおりです。

<%

var x = request.getParameter("x");
var y = request.getParameter("y");
//var sum = parseInt(x) + parseInt(y);
var sum = add(parseInt(x), parseInt(y));

response.content = {
    success: true,
    data: {
        result: sum
    }
};

function add(x, y) {

    var ws = require('ws');

    var stub = new ws.WSStub("http://02-128:8280/services/BpmAdderProcessProxy?wsdl");

    var process = stub.services["BpmAdderProcessProxy"].operations["process"];

    var payloadTemplate = process.payloadXML();

    var payload = replaceQuestionMarks(payloadTemplate, arguments);

    var resultXml = process.request(payload);

    var resultValue = resultXml.children().text();

    return parseInt(resultValue);


}

function replaceQuestionMarks(template, values) {

    var i = 0;

    return template.replace(
        /\?/g, 
        function() { 
            return values[i++]; 
        }
    );

}

%>
4

1 に答える 1

0

ESB v4.8.1 では、パススルー トランスポートがデフォルトで有効になっており、SOAP 本文ベースのディスパッチをサポートしていません (メッセージを構築しないため、本文の最初の要素にアクセスして操作を見つけることができません)。

  • 操作名をエンドポイント url に追加できます。http://host:8280/services/BpmAdderProcessProxy/OperationName

  • WSO2 ESB のプロキシ設定 (BpmAdderProcessProxy) にこのパラメーターを追加できます。<parameter name="disableOperationValidation" locked="false">true</parameter>

  • wso2esb/repository/conf/axis2/axis2.xml を編集して<handler class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher" name="SOAPMessageBodyBasedDispatcher"/><handler class="org.apache.synapse.core.axis2.SynapseSOAPMessageBodyBasedDispatcher" name="SOAPMessageBodyBasedDispatcher"/>

于 2014-08-26T08:28:23.690 に答える