如何使用XML访问Java EE上的命名空间绑定?

时间:2012-12-10 07:48:27

标签: java-ee websphere jndi

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

  • 绑定类型 =字符串
  • 绑定标识符 = test
  • 名称空间中名称相对于查找名称前缀'cell / nodes / DummyNode01 / servers / server1 /':= url1
  • 字符串值 =< some string>

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

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

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

谢谢!

1 个答案:

答案 0 :(得分: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 docs

希望这有帮助,

ScottH