我正在尝试在 Liberty Profile 中运行现有的 WebSphere 应用程序,但遇到了问题。该应用程序在服务器中配置了一个资源环境条目,我需要将其转换为 Liberty Profile 资源。如何在 server.xml 中配置不是数据源 (dataSource) 或常量 (jndiEntry) 的 JNDI 资源?
非常感谢
我正在尝试在 Liberty Profile 中运行现有的 WebSphere 应用程序,但遇到了问题。该应用程序在服务器中配置了一个资源环境条目,我需要将其转换为 Liberty Profile 资源。如何在 server.xml 中配置不是数据源 (dataSource) 或常量 (jndiEntry) 的 JNDI 资源?
非常感谢
您可以使用 server.xml 中的元素进行配置。这记录在信息中心。本质上,您可以使用以下命令在 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;
目前这对于 Liberty Profile 是不可能的。此问题已在此处的 IBM WasDev 论坛https://developer.ibm.com/answers/questions/6221/resource-environment-entries-in-liberty-profile/?community=wasdev RFE 流程 (31525) 中得到解答为它创建以在将来的版本中支持它。
在 8.5.5.x 中有几个新条目:
例如:要配置 URL,您可以使用jndiURLEntry