1

我使用以下信息在 IBM WebSphere 7.0 上添加了名称空间绑定:

  • 绑定类型= 字符串
  • 绑定标识符= 测试
  • 名称空间中相对于查找名称前缀“cell/nodes/DummyNode01/servers/server1/”的名称:= url1
  • 字符串值= <某个字符串>

我能够使用以下代码访问我的 Web 应用程序代码中的字符串值:

Context initial_ctx;
initial_ctx = new InitialContext();
String value = (String) initial_ctx.lookup("url1");

现在我想将 String 值放在 XML 中,而不是通过代码访问它。如何在 XML 中访问 WebSphere 的名称空间绑定?我可以在context-param标签内声明它吗?

谢谢!

4

1 回答 1

3

一些笔记。

首先,NSB 的字符串名称(JNDI 字符串)在 WebSphere 上会有所不同,具体取决于您设置的范围。您在帖子中确定的“服务器”范围允许您按原样通过其友好名称(在您的示例中为“url1”)引用此字符串值。但是,请注意在集群环境中 - 您必须在每个服务器实例上定义此 NSB,您可能希望所有集群成员应用服务器具有相同的值。在这种情况下,在单元级别定义 NSB,并在您的代码(或稍后,您的 Spring xml)中使用 jndi 名称“cell/persistent/url1”。

由于 WebSphere 中的 NSB 只是命名服务 (JNDI) 中的字符串,因此您可以使用 Spring JndiFactoryBean:

<bean id="myUrl1NameSpaceBinding" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="url1"/> <!-- cell/persistent/url1 in a cluster-wide shared namespace binding -->
    <property name="cache" value="true"/>
    <property name="resourceRef" value="false"/>
    <property name="lookupOnStartup" value="false"/>
    <property name="expectedType" value="java.lang.String"/>
</bean>

还有一种速记的味道:

<jee:jndi-lookup />

另请参阅:Spring XML 文档

希望这可以帮助,

斯科特

于 2012-12-15T20:03:06.440 回答