序:
大多数J2EE应用程序都通过JNDI使用容器管理的数据源。这很好,因为它为配置这些连接提供了一个位置
当我们想要使用ORM框架(如hibernate)或者必须知道默认模式的东西(主要用于Oracle,也可能是其他模式)时,会出现问题,这可能与用于连接到数据库的用户名不同。
我想将默认架构名称放在靠近数据源定义的位置。其中一个选择是将它放在JNDI中。然后我将在构建EntityManager之前从那里手动读取(实际上使用Spring)。
正如我发现有一种简单的方法可以在Apache Tomcat中指定自定义资源(在这种情况下它将是具有默认模式名称的String)(如果我错了,请纠正我):
<Environment name="schemaNames/EmployeeDB"
type="java.lang.String"
value="empl"
description="Schema name of Employees Database for HR Applications"/>
无论如何,考虑到这可以在Apache Tomcat中完成,我应该如何在其他应用程序服务器中配置相同的自定义JNDI资源(String类型):
如果您了解其他服务器也会很棒。
另外,作为替代方案,我不想将模式名称放在系统属性或环境变量中。
非常感谢!
更新
找到了一些在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
答案 0 :(得分:5)
对于WebSphere,您实际上可以在定义的DataSource中设置默认架构。它是一个名为currentSchema的自定义属性。 (即,在V7中,它是资源&gt; JDBC&gt;数据源&gt;您的数据源名称&gt;自定义属性&gt; currentSchema。
否则你可以使用名称空间绑定并在那里定义:(即,在V7中它是环境&gt;命名&gt;名称空间绑定。如果你不想以编程方式设置,你可以使用JNDI来查找它它在WebSphere。
不能和JBoss和WebLogic说话,因为我没有和他们合作过。
答案 1 :(得分:3)
如果您正在使用Hibernate,则这是在持久性单元中添加的属性:
<property name="hibernate.default_schema" value="myschema" />
这是JPA将为表名插入的前缀。
如果您需要“更接近”AS数据源定义,您可以在数据库连接时注入一些特定于数据库的SQL;例如Oracle,
ALTER SESSION SET CURRENT_SCHEMA =
在JBoss上,您可以在数据源定义中添加它:
<new-connection-sql>
ALTER SESSION SET CURRENT_SCHEMA=myschema
</new-connection-sql>
也可在JBoss 7 Admin。中编辑。
在Weblogic上,您可以在连接池中注入它。
在Websphere上,这应该是类似的。
答案 2 :(得分:2)
在JBoss上,您可以使用特殊的MBean(org.jboss.naming.JNDIBindingServiceMgr)和service.xml来配置JNDI条目,然后将这些条目映射到您的webapps中。这里有一个冗长的解释:
http://usna86-techbits.blogspot.com/2011/01/jboss-jndi-and-javacompenv.html
我仍在寻找一种将整个properties-file / resourcebundle放入jndi的方法,因为当你有很多属性需要放入jndi并为你的webapps提供时,这种手动映射变得非常繁琐。 。
答案 3 :(得分:2)
同样的问题一直困扰着WebLogic,特别是10.3.5(11g)。
我花了大约一天的时间环顾四周,我发现的只有:http://code.google.com/p/weblogic-jndi-startup/。它工作得很好。它有点限制:它要求您要添加到JNDI的对象具有带有单个String参数的构造函数。
对于我需要的东西,weblogic-jndi-startup并不起作用,所以我建立在Roger的代码上并提出了这个:https://bitbucket.org/phillip_green_idmworks/weblogic-jndi-custom-resource-configuration/。我在http://coder-in-training.blogspot.com/2012/03/weblogic-jndi-custom-resource.html
上写了一篇文章