基于 Java 的适配器 - 找不到返回值
Posted
技术标签:
【中文标题】基于 Java 的适配器 - 找不到返回值【英文标题】:Java based Adapter- Could not find the Return value 【发布时间】:2013-04-08 11:18:54 【问题描述】:我在 worklight 中使用基于 java 的适配器。我有一个返回字符串值的方法。我可以调用该函数,结果将转到适配器中的成功处理程序,但我无法找到有关返回值的任何信息。我在响应 JSON 中的任何地方都看不到返回的字符串。谁能帮我这个?
这是我的响应 JSON:
"status":200,"invocationContext":null,"invocationResult":"responseID":"16","isSuccessful":true
我看过下面的例子 http://public.dhe.ibm.com/ibmdl/export/pub/software/mobile-solutions/worklight/docs/Module_05_5_-_Using_Java_in_Adapters.pdf,当我对代码示例执行“调用适配器过程”时,我得到了这个结果。
"isSuccessful": true, "result": -9 其中 result 是适配器中 java 方法的返回值。
但是当我为我的应用程序做同样的事情时,我得到以下结果
"isSuccessful": true
Java-adapter.impl 代码
function getXML() return 结果: com.worklight.javaCode.FileIOPlugin.getXML() ;
Java 类方法
公共类 FileIOPlugin 公共静态字符串 getXML() 返回“成功”;
function getXML()
var invocationData =
adapter: 'JavaAdapter',
procedure: 'getXML'
;
WL.Client.invokeProcedure(invocationData,
onSuccess: successHandler,
onFailure: failureHandler
);
function successHandler(data) alert(JSON.stringify(data));
function failureHandler(data) alert("Error to get data");
【问题讨论】:
能贴出适配器代码吗? 嗯,是的,看起来不错。调用适配器的客户端代码呢? 这可能无关紧要,或者可能是在您复制代码时发生的,但成功处理程序有一个错字:“function sucessHandler”,因为它缺少一个“c”。到目前为止,我无法重现您的错误... @JeremyNortey:这是我粘贴到这里时的拼写错误。它实际上只有successHandler 。还有什么我需要添加/更改的吗? 【参考方案1】:return 必须是一个对象。
【讨论】:
嗨..我也尝试过发送对象。但我仍然看不到在哪里可以找到返回的对象。【参考方案2】:我尝试在最近发布的 Worklight 6.0 中重现您的问题,在复制和粘贴您的代码后,我发现一切正常。
我所做的唯一更改是在用于调用适配器方法的 invocationData 对象上添加空参数。
这是我的确切代码:FileIOPlugin.java(在 server/conf 下,在包 com.worklight.javacode 中)
package com.worklight.javacode;
public class FileIOPlugin
public static String getXML()
return "SUCCESS";
JavaAdapter.xml(HTTP 适配器定义,在适配器文件夹下)
<?xml version="1.0" encoding="UTF-8"?>
<wl:adapter name="JavaAdapter"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wl="http://www.worklight.com/integration"
xmlns:http="http://www.worklight.com/integration/http">
<displayName>JavaAdapter</displayName>
<description>JavaAdapter</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>rss.cnn.com</domain>
<port>80</port>
<!-- Following properties used by adapter's key manager for choosing specific certificate from key store
<sslCertificateAlias></sslCertificateAlias>
<sslCertificatePassword></sslCertificatePassword>
-->
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>
<procedure name="getXML"/>
</wl:adapter>
JavaAdapter-impl.js(JavaAdapter.xml 旁边)
function getXML()
return
result : com.worklight.javacode.FileIOPlugin.getXML()
;
我将我的应用程序称为 javaAdapterApp,因此这些文件名:
javaAdapterApp.js(在 apps/javaAdapterApp/common/js 下)
function wlCommonInit()
function getXML()
var invocationData =
adapter : 'JavaAdapter',
procedure : 'getXML',
parameters : []
;
WL.Client.invokeProcedure(invocationData,
onSuccess : successHandler,
onFailure : failureHandler
);
function successHandler(data)
alert(JSON.stringify(data));
function failureHandler(data)
alert("Error to get data");
最后 javaAdapterApp.html(在 apps/javaAdapterApp/common 下)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>javaAdapterApp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
<link rel="shortcut icon" href="images/favicon.png">
<link rel="apple-touch-icon" href="images/apple-touch-icon.png">
<link rel="stylesheet" href="css/javaAdapterApp.css">
<script>window.$ = window.jQuery = WLJQ;</script>
</head>
<body id="content" style="display: none;">
<button onClick="getXML()">GET XML</button>
<script src="js/initOptions.js"></script>
<script src="js/javaAdapterApp.js"></script>
<script src="js/messages.js"></script>
</body>
</html>
我在测试服务器上运行它,成功处理程序中 JSON.stringify(data) 的结果如下所示:
"status":200,"invocationContext":null,"invocationResult":"responseID":"9","result":"SUCCESS","isSuccessful":true
invocationResult.result中有您要查找的“SUCCESS”字符串。
希望这会有所帮助 奥兰多
【讨论】:
以上是关于基于 Java 的适配器 - 找不到返回值的主要内容,如果未能解决你的问题,请参考以下文章
在 authenticationConfig.xml 中找不到 IBM Mobile First 平台 v7.1 定制安全测试