【发布时间】:2012-04-03 10:37:34
【问题描述】:
我在 Tomcat 7.0 上开发了一个使用 Datanucleus / JDO 访问数据库的应用程序。我目前将 JDO 连接属性存储在应用程序本身的“datanucleus.properties”中。连接工作正常,但我想将连接信息存储为 JNDI,将其存储在服务器上,而不是在 war 本身中(远程部署时我总是需要替换 war 中的文件)。
我尝试了以下方法:
在应用程序的web.xml中创建一个(jdbc/ConnectionDB)
-
在“Server.xml”中,我尝试在我的应用程序的上下文中添加以下内容
<Resource name="jdbc/ConnectionDB" auth="Container" type="javax.jdo.PersistenceManagerFactory" /> <ResourceParams name="jdbc/ConnectionDB <parameter> <name>javax.jdo.PersistenceManagerFactoryClass</name> <value>org.datanucleus.api.jdo.JDOPersistenceManagerFactory</value> </parameter> <parameter> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/TomcatTest</value> </parameter> ... -
然后我尝试使用以下语法创建一个新的 PMF:
上下文上下文 = null; PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("java:comp/env/jdbc/ConnectionDB",context);
当我运行我的应用程序时,我得到一个 javax.jdo.JDOUserException: 你要么指定此 PMF 使用“datanucleus.properties”的“持久性单元”(但这不存在!)
我真的不明白我的设置出了什么问题。
问候,
马塞尔
【问题讨论】:
-
Marcel,我正在做完全相同的事情,试图让 datanucleus、tomcat 和 mysql 一起工作。我的问题是由于某种原因我无法让 eclipse 插件在我的类上工作,并且我不断收到类不可持久异常。相同的代码适用于独立应用程序。我几乎可以肯定我在放置 orm 文件的位置等方面存在问题,如果您可以通过共享文件夹结构和 xml 文件和部署来提供帮助,如果这将是一个巨大的帮助。我在这里发布了一个问题,但还没有答案。抬头看看我的问题。提前致谢。
标签: java tomcat jndi datanucleus