我有很多与我的数据库连接的不同JNDI名称WebSphere服务器的,所以我必须建造许多的耳朵文件为每个服务器。 我想这样做:
<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${SPECIFIC_JNDI_NAME}"/>
</bean>
我怎样才能创建这个SPECIFIC_JNDI_NAME变量?
我有很多与我的数据库连接的不同JNDI名称WebSphere服务器的,所以我必须建造许多的耳朵文件为每个服务器。 我想这样做:
<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${SPECIFIC_JNDI_NAME}"/>
</bean>
我怎样才能创建这个SPECIFIC_JNDI_NAME变量?
正确的Java EE的方式做到这一点,在你的代码一样使用资源引用: java:comp/env/jdbc/myDSRef
,那么这个资源引用在安装过程中绑定到实际的JNDI名称。
你要么定义通过引用@Resource
标签,或在部署描述符(条目web.xml
或ejb-jar.xml
)。
你把它映射到通过管理控制台,JNDI名称wsadmin
安装脚本,或者ibm-web-bnd.xml
放置在WEB-INF文件夹中的文件。
它可以使用Spring的引用。
这是错误的方式去了解它。 JNDI的一个优点是可以绑定对象(在这种情况下,一个数据源)下一个JNDI名称,没有照顾从哪里来,它如何实例等,只要它是有它在第一次访问时间到了。
您(或任何人配置JNDI名称)基本上都是试图通过不同的JNDI名称结合不同的数据源,以带走优势。
一种解决方法可能是“自定义”的名字绑定到一个“标准”的JNDI名称,以便您的应用程序仍然可以参照“标准”的名字,并提供合适的bean中的责任是那些谁配置JNDI但实际上,如果你走那么远,你也可以只给数据源的标准名称。 另外,我不知道在JNDI这甚至有可能,我只知道它用在Spring的自己的配置是可能的。