Ibm mobilefirst Worklight适配器,Java类路径
简单的问题是:如何使Java资源包可用于从Worklight适配器访问的Java JAR中的代码?我认为这相当于:Worklight适配器下Java使用的类路径是什么 原因:我们使用与特定企业服务通信的第三方Java库,它有自己的配置机制来确定服务的位置,该机制使用资源包 我们将库jar放在server/lib文件夹中,并成功地从适配器调用库代码:Ibm mobilefirst Worklight适配器,Java类路径,ibm-mobilefirst,worklight-adapters,Ibm Mobilefirst,Worklight Adapters,简单的问题是:如何使Java资源包可用于从Worklight适配器访问的Java JAR中的代码?我认为这相当于:Worklight适配器下Java使用的类路径是什么 原因:我们使用与特定企业服务通信的第三方Java库,它有自己的配置机制来确定服务的位置,该机制使用资源包 我们将库jar放在server/lib文件夹中,并成功地从适配器调用库代码: manager = com.third.party.manager.getInstance(); // manager is cor
manager = com.third.party.manager.getInstance();
// manager is correctly obtained
token = manager.talkToServer();
// this fails with an error indicating that the server location is unknown
我们看到第三方代码正试图使用这种模式,特别是getBundle()的3个变量如下所示:
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("ThirdParty");
Enumeration<String> enumeration = bundle.getKeys();
while (enumeration.hasMoreElements()){
String str = enumeration.nextElement();
System.out.println("property " + str);
//etc
作为测试,创建了一个包含上述代码的小Java应用程序,并将资源JAR添加到该应用程序的类路径中;我们按预期装载的包裹
然后,我将Java转换为适配器代码:
var bundle = java.util.ResourceBundle.getBundle("ThirdParty");
var enumeration = bundle.getKeys();
while (enumeration.hasMoreElements())
{
var str = enumeration.nextElement();
var val = bundle.getString(str);
}
将我的属性JAR文件添加到server/lib,并得到一个异常,告诉我无法找到捆绑包
关于更好的类路径的建议?我刚刚尝试过,一切都很好。我尝试重新创建问题的步骤:
function test(){
return {
data: com.anton.PropGetter.getProp("name")
};
}
package com.anton;
import java.util.ResourceBundle;
public class PropGetter {
public static String getProp(String propName){
ResourceBundle bundle = ResourceBundle.getBundle("props");
return propName + " :: " + bundle.getString(propName);
}
}
{
"data": "name :: anton",
"isSuccessful": true
}
谢谢,这确实有效。它与我最初的例子略有不同,它的等效物是包装在一个罐子里的,但我也这样做了,它仍然可以正常工作。第三方案例彻底失败,我从javascript直接调用ResourceBundle也是如此。我会继续挖掘,至少这个答案证实了资源加载的一般情况与预期的一样。
{
"data": "name :: anton",
"isSuccessful": true
}