我使用以下信息在IBM WebSphere 7.0上添加了名称空间绑定:
我能够使用以下代码访问我的Web应用程序代码中的String值:
Context initial_ctx;
initial_ctx = new InitialContext();
String value = (String) initial_ctx.lookup("url1");
现在我想将String值放在XML中,而不是通过代码访问它。我如何在XML中访问WebSphere的名称空间绑定?我可以在context-param
代码中声明它吗?
谢谢!
答案 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