使用 Jaggery WSStub 访问 ESB 代理时出错 [英] Error when accessing ESB Proxy with Jaggery WSStub

查看:26
本文介绍了使用 Jaggery WSStub 访问 ESB 代理时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个 Web 服务,并且能够毫无问题地从服务器端 Jaggery.js 脚本向它发送请求.然后我在 WSO2 ESB 中创建了一个 WSDL 代理服务并使用尝试它!"进行测试.特征.

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.

将服务器端脚本从原始 Web 服务重定向到 ESB 内的代理后,系统日志中出现错误:

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

未找到操作的端点引用 (EPR) 是/services/BpmAdderProcessProxy.BpmAdderProcessProxyHttpSoap11Endpoint 和 WSA Action = urn:anonOutInOpResponse.如果之前可以访问此 EPR,请联系服务器管理员.

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.

为了详细了解发生了什么,我激活了 ESB 的SOAP Message Tracer".突然间,我的服务器端脚本可以通过我的 ESB 代理访问网络服务.然后我停用了SOAP Message Tracer",错误消息又回来了.我的服务器端脚本是否正确?或者调试工具是否修改了被调试代码的行为?

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?

我是一名 JavaScript 开发人员.实际上 Jaggery 和 UES 是针对像我这样的人的.我不应该查看 Java 代码的内部,是吗?有没有 JavaScript 开发者讨论 WSO2 UES 和 Jaggery 的论坛?

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++]; 
        }
    );

}

%>

推荐答案

在 ESB v4.8.1 中,默认启用传递传输,并且它不支持基于 SOAP 主体的调度(它不构建消息,因此它可以't 访问 body 的第一个元素来查找操作)

In ESB v4.8.1, pass-through transport is enabled by default and it does not support SOAP body based dispatching (it does not build the message so it can't acces the body's first element to find the operation)

  • 您可以将操作名称附加到端点 url :http://host:8280/services/BpmAdderProcessProxy/OperationName

您可以在 WSO2 ESB 的代理配置 (BpmAdderProcessProxy) 中添加此参数:<parameter name="disableOperationValidation" locked="false">true</parameter>

You can add this parameter in your proxy conf (BpmAdderProcessProxy) in WSO2 ESB : <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"/>

You can edit wso2esb/repository/conf/axis2/axis2.xml and replace <handler class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher" name="SOAPMessageBodyBasedDispatcher"/> with <handler class="org.apache.synapse.core.axis2.SynapseSOAPMessageBodyBasedDispatcher" name="SOAPMessageBodyBasedDispatcher"/>

这篇关于使用 Jaggery WSStub 访问 ESB 代理时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆