配置Liberty Profile中不是数据源的JNDI资源

时间:2013-08-06 14:43:46

标签: websphere-liberty

我正在尝试在Liberty Profile中运行现有的WebSphere应用程序,但遇到了问题。应用程序在服务器中配置了资源环境条目,我需要将其转换为Liberty Profile资源。如何在server.xml中配置JNDI资源,该资源不是数据源(dataSource)或常量(jndiEntry)?

非常感谢

3 个答案:

答案 0 :(得分:3)

您可以使用server.xml中的元素进行配置。这在infocenter中有记录。基本上,您使用以下命令在server.xml中启用jndi功能:

<featureManager>
   <feature>jndi-1.0</feature>
</featureManager>

然后您可以配置JNDI条目。您只能使用此方法执行简单类型,因此不能使用复杂对象。要配置您的输入,请执行以下操作:

<jndiEntry jndiName="myProp/philosopher" value="plato" />

Liberty配置文件会进行类型推断,所以如果你表达了这个:

<jndiEntry jndiName="myProp/philosopher" value="1234" />

你从JNDI得到一个号码。如果你表达这个:

<jndiEntry jndiName="myProp/philosopher" value="1234.3D" />

你得到双倍。

如果您想要一个数字作为字符串文字,您可以使用引号表达它:

<jndiEntry jndiName="myProp/philosopher" value='"1234.3D"' />

要从您的应用程序中获取此信息,您可以执行全局查找,例如:

Context ctx = new InitialContext();
Object jndiConstant = ctx.lookup("myProp/philosopher");
String philosopher = (String) jndiConstant;

您还可以将其映射到ibm-web-bnd.xml文件中的资源环境条目:

<env-entry name="philosopher" binding-name="myProp/philosopher" />

然后使用此代码进行查找:

Context ctx = new InitialContext();
Object jndiConstant = ctx.lookup("java:comp/env/philosopher");
String philosopher = (String) jndiConstant;

答案 1 :(得分:1)

目前Liberty Profile无法实现这一点。这个问题在IBM WasDev论坛中得到了解答https://developer.ibm.com/answers/questions/6221/resource-environment-entries-in-liberty-profile/?community=wasdev 已经创建了一个RFE流程(31525),以便在将来的版本中支持它。

答案 2 :(得分:0)

在8.5.5.x中有几个新的entries

例如:要配置网址,您可以使用jndiURLEntry