我有这样一个问题:不同的 Web 服务器对 jndi 命名有不同的规则。因此,例如,如果在 Tomcat 中我想使用 jndi 名称作为数据源,它将如下所示:
<dataSource type="JNDI">
<property name="data_source" value="java:comp/env/jdbc/myJndiName"/>
</dataSource>
但是在 WebSphere 或 Jboss 中,我必须提供不带“comp/env”的 jndi 名称,就像
<dataSource type="JNDI">
<property name="data_source" value="java:jdbc/myJndiName"/>
</dataSource>
或我在配置中提供的 jndi 名称。如果使用与 Tomcat 中相同的名称,使用“comp/env”前缀,显然是行不通的。
有没有办法让应用程序对不同的网络服务通用?我正在考虑编写自己的 DataSource 包装来检查 jndi 名称的可用性并正确设置它。有什么想法吗?