我試圖在WSO2 AS 5.1.0中創建混搭。我成功地創建了一個簡單的HelloWorld服務,但是當我嘗試將其他服務集成到它中時,出現錯誤。使用具有參數的外部服務的WSO2混搭
這是我的HelloWorld服務:
this.documentation = "This is a test Hello World service";
system.include("HelloStub.js");
hello.documentation = "say hello"
hello.inputTypes = {"user": "string"}
hello.outputType = "string";
function hello(user){
try{
var response = services["admin/testmashup"].operations["sayMyName"](user);
}catch(e){
return "Danger, Robinson! " + e.toString()
}
return "Hello, there! " + response;
}
function whoAreYou(){
try{
var response = services["admin/testmashup"].operations["toString"]();
}catch(e){
return "Danger, Robinson! " + e.toString()
}
return "Hello! " + response;
}
這是admin/testmashup
服務
this.serviceName = "testmashup";
this.documentation = "Test mashup service" ;
toString.documentation = "say something" ;
toString.inputTypes = { /* no arguments */ };
toString.outputType = "string";
function toString()
{
return "Hi, my name is testmashup";
}
sayMyName.documentation = "Make me feel happy";
sayMyName.inputTypes = {"myName":"string"};
sayMyName.outputType = "string";
function sayMyName(myName){
return "Your very beautiful name is " + myName;
}
我必須指出的是,當我致電admin/testmashup
服務,它按預期工作。
文件HelloStub.js
是由WSO2 Applicanton服務器生成的Javascript(E4X)存根控件。
當我測試操作whoAreYou
,它沒有參數,我得到如下回應:
<ws:whoAreYouResponse xmlns:ws="http://services.mashup.wso2.org/helloWorld?xsd">
<return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:js="http://www.wso2.org/ns/jstype" js:type="string" xsi:type="xs:string">Hello! <ws:toStringResponse xmlns:ws="http://services.mashup.wso2.org/testmashup?xsd"><return>Hi, my name is testmashup</return></ws:toStringResponse></return>
</ws:whoAreYouResponse>
我可以看到編碼的響應中的文本Hi, my name is testmashup
。但是,當我嘗試調用hello
,與下面的XML:
<body>
<p:hello xmlns:p="http://services.mashup.wso2.org/helloWorld?xsd">
<!--Exactly 1 occurrence-->
<user>John</user>
</p:hello>
</body>
我收到以下錯誤:
<ws:helloResponse xmlns:ws="http://services.mashup.wso2.org/helloWorld?xsd">
<return>Danger, Robinson! org.wso2.carbon.CarbonException: Invalid input for the payload in WSRequest Hostobject : John</return>
</ws:helloResponse>
我試圖讓這項工作的最後幾天,已經找遍了所有在這個地方尋找答案,但我似乎無法找到答案。 official documentation未提供使用具有一個或多個參數的操作的外部Web服務的存根的示例。
另外,如果可能的話,我想知道如何從JavaScript混搭中使用REST-JSON服務。
任何想法?
而且這是我第二次回答我的問題......如果不是第二個問題我張貼,也不會怪在所有... – chechopeefe