我有很多Websphere服务器,我的DB连接有不同的JNDI名称,所以我必须为每个服务器构建多个ears文件。我想做这样的事情:
<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${SPECIFIC_JNDI_NAME}"/>
</bean>如何创建这个SPECIFIC_JNDI_NAME变量?
发布于 2015-06-24 13:37:29
正确的Java方法是在代码中使用资源引用(如:java:comp/env/jdbc/myDSRef ),然后在安装过程中将该资源引用绑定到实际的JNDI名称。
您可以通过@Resource标记定义引用,或者在部署描述符(web.xml或ejb-jar.xml)中定义条目。
您可以通过管理控制台、wsadmin安装脚本或放在WEB文件夹中的ibm-web-bnd.xml文件将其映射到JNDI名称。
可以在Spring中使用引用。
发布于 2015-06-24 12:08:23
这样做是错误的。JNDI的一个优点是,您可以在一个JNDI名称下绑定对象(在本例中是数据源),而无需考虑对象的来源、实例化的方式等等,只要它在第一次访问时就在那里。
您(或配置JNDI名称的人)基本上是试图通过在不同的JNDI名称上绑定不同的数据源来获取这一优势。
解决方法可能是将“自定义”名称绑定到“标准”JNDI名称,这样您的应用程序仍然可以引用“标准”名称,而提供正确bean的责任在于那些配置JNDI的人,但实际上,如果您走了那么远,您也可以为数据源指定标准名称。而且,我也不确定这在JNDI中是否可行,我只知道在Spring自己的配置中这是可能的。
https://stackoverflow.com/questions/31025654
复制相似问题