动态传递的JNDI名称(Passing the JNDI name dynamically)

2019-09-28 21:55发布

我有很多与我的数据库连接的不同JNDI名称WebSphere服务器的,所以我必须建造许多的耳朵文件为每个服务器。 我想这样做:

<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="${SPECIFIC_JNDI_NAME}"/>
</bean>

我怎样才能创建这个SPECIFIC_JNDI_NAME变量?

Answer 1:

正确的Java EE的方式做到这一点,在你的代码一样使用资源引用: java:comp/env/jdbc/myDSRef ,那么这个资源引用在安装过程中绑定到实际的JNDI名称。

你要么定义通过引用@Resource标签,或在部署描述符(条目web.xmlejb-jar.xml )。

你把它映射到通过管理控制台,JNDI名称wsadmin安装脚本,或者ibm-web-bnd.xml放置在WEB-INF文件夹中的文件。

它可以使用Spring的引用。



Answer 2:

这是错误的方式去了解它。 JNDI的一个优点是可以绑定对象(在这种情况下,一个数据源)下一个JNDI名称,没有照顾从哪里来,它如何实例等,只要它是有它在第一次访问时间到了。

您(或任何人配置JNDI名称)基本上都是试图通过不同的JNDI名称结合不同的数据源,以带走优势。

一种解决方法可能是“自定义”的名字绑定到一个“标准”的JNDI名称,以便您的应用程序仍然可以参照“标准”的名字,并提供合适的bean中的责任是那些谁配置JNDI但实际上,如果你走那么远,你也可以只给数据源的标准名称。 另外,我不知道在JNDI这甚至有可能,我只知道它用在Spring的自己的配置是可能的。



文章来源: Passing the JNDI name dynamically