【发布时间】:2016-08-18 17:35:03
【问题描述】:
是否有可能根据包含要链接到哪个环境的变量的值来选择 JNDI 资源?
例如,在我的域中,我有 3 个环境:DEV、QA 和 STAGE。我有一个名为 EcommReporting 的数据库,每个环境都存在该数据库。为此,在我的 tomcat 服务器的 server.xml 文件中,我为 DEV_EcommReporting、QA_EcommReporting 和 STAGE_EcommReporting 设置了单独的条目。
问题是,我的代码是否可以通过某种方式请求名为 EcommReporting 的 JNDI 资源并提供环境名称,然后根据这两个细节返回正确的资源?
现在我正在使用 Spring 定义一个数据源 bean:
<bean id="EcommReportingDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/EcommReporting"/>
</bean>
然后在我的 Tomcat 服务器的 context.xml(仅显示 QA 版本)中,我有这个:
<ResourceLink name="jdbc/EcommReporting"
global="jdbc/QA_EcommReporting"
auth="Container"
type="javax.sql.DataSource" />
最后,在我的 Tomcat 服务器的 server.xml 中,我定义了 JNDI 资源如下:
<Resource name="jdbc/QA_EcommReporting"
global="jdbc/QA_EcommReporting"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://URLHERE.COM:3311/REPORTING"
username="username_here"
password="password_here"
maxActive="100"
maxIdle="20"
minIdle="5"
maxWait="10000"/>
广告
【问题讨论】:
-
不清楚你想要什么,你有 3 个 tomcat 实例,你希望能够从不同的 JVM 访问这 3 个实例使用的数据源,这是你想要的吗?
标签: java xml spring tomcat jndi