【发布时间】:2010-09-20 08:37:18
【问题描述】:
前言:
大多数 J2EE 应用程序都通过 JNDI 使用容器管理的数据源。这很好,因为它为配置这些连接提供了一个位置。
当我们想要使用 ORM 框架(如休眠)或必须知道默认模式的东西(主要用于 Oracle,也可能是其他模式)时,就会出现问题,这可能与用于连接数据库的用户名不同。
我想将默认模式名称放在靠近数据源定义的位置。一种选择是将它放在 JNDI 中。然后,我将在构建 EntityManager 之前从那里手动读取(实际上使用 Spring)。
我发现有一种简单的方法可以像这样在 Apache Tomcat 中指定自定义资源(在这种情况下,它将是带有默认架构名称的字符串)(如果我错了,请纠正我):
<Environment name="schemaNames/EmployeeDB"
type="java.lang.String"
value="empl"
description="Schema name of Employees Database for HR Applications"/>
无论如何,考虑到这可以在 Apache Tomcat 中完成,我应该如何在其他应用程序服务器中配置相同的自定义 JNDI 资源(字符串类型):
- JBoss 4/5
- WebSphere 6/7
- WebLogic 9/10
如果您了解其他服务器,那就太好了。
另外,作为替代方案,我不想将架构名称放在系统属性或环境变量中。
非常感谢!
更新:
在 JBoss 上找到了一些实现它的方法。我没有测试它。
http://forums.java.net/jive/thread.jspa?messageID=316228
找到有关 WebLogic 的信息,但他们谈论的是通过编程而不是配置来实现:
http://weblogic-wonders.com/weblogic/2010/06/12/binding-objects-in-weblogic-servers-jndi-tree/
http://forums.oracle.com/forums/thread.jspa?messageID=4397353
【问题讨论】:
-
为什么不想使用环境变量(
env-entry)? -
这正是我想要做的,但没有编辑应用程序的 web.xml。
标签: java jakarta-ee jboss weblogic jndi