0

I created a web service and was able to send requests to it from a serverside Jaggery.js script with no problem. Then I created a WSDL Proxy Service inside WSO2 ESB and tested it using the "Try it!" feature.

After I redirected my serverside script from the original web service to its proxy inside ESB, I got the error in System Logs:

The endpoint reference (EPR) for the Operation not found is /services/BpmAdderProcessProxy.BpmAdderProcessProxyHttpSoap11Endpoint and the WSA Action = urn:anonOutInOpResponse. If this EPR was previously reachable, please contact the server administrator.

To see in detail what was happening I activated the "SOAP Message Tracer" of the ESB. Suddenly my serverside script could access the webservice via my ESB proxy. Then I deactivated the "SOAP Message Tracer" and the error message was back again. Is my serverside script correct? Or does the debugging tool modify behavior of debugged code?

I'm a JavaScript developer. Actually Jaggery and UES are targeted at people like me. I'm not supposed to look inside Java code, am I? Is there a forum where JavaScript developers discuss WSO2 UES and Jaggery?

My serverside code is as follows:

<%

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 回答