簡體   English   中英

數據核(JDO)的Tomcat JNDI資源

[英]Tomcat JNDI resource for Datanucleus (JDO)

我已經在Tomcat 7.0上開發了一個使用Datanucleus / JDO訪問數據庫的應用程序。 我目前在應用程序本身的“ datanucleus.properties”中存儲了JDO連接屬性。 連接工作正常,但是我想將連接信息存儲為JNDI,以便將其存儲在服務器上,而不再用於戰爭本身(遠程部署它時,我總是必須在戰爭中替換該文件)。

我嘗試了以下方法:

  1. 在應用程序的web.xml(jdbc / ConnectionDB)中創建一個

  2. 在“ 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> ... 
  3. 然后,我嘗試使用以下語法創建新的PMF:

    上下文上下文= null; PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory(“ java:comp / env / jdbc / ConnectionDB”,context);

運行我的應用程序時,我得到一個javax.jdo.JDOUserException:您已為此PMF指定使用“ datanucleus.properties”的“持久性單元”(但不存在!)

我不太了解我的設置有什么問題。

問候,

馬塞爾

我終於找到了我想要的解決方案,我將其發布在這里,它可能會對其他人有所幫助:

  1. 在服務器的“ Context.xml”文件中創建資源

      <Resource name="jdbc/SyncTestDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="mysql" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/SyncTestDB"/> 
  2. 在應用程序的“ web.xml”文件中創建對該資源的引用

      <resource-ref> <description>MySQL Database Connection</description> <res-ref-name>jdbc/SyncTestDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 
  3. 最后使用JNDI連接獲得一個Persistence Manager Factory:

     PersistenceManagerFactory pmf; Properties properties = new Properties(); properties.setProperty("datanucleus.ConnectionFactoryName","java:comp/env/jdbc/SyncTestDB"); 

閱讀JDOHelper.getPersistenceManagerFactory(String)的javadoc,顯然它不是用於傳遞某些JNDI數據源字符串。

閱讀Tomcat的文檔,您還將看到指定數據源不提供JDO連接詳細信息。

您可以同樣為“ javax.jdo.option.ConnectionFactoryName”屬性使用該JNDI字符串指定persistence.xml。 根據JDO規范和DataNucleus / Tomcat文檔,然后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM