2012-04-03 16 views
1

Datanucleus/JDOを使用してデータベースにアクセスするTomcat 7.0のアプリケーションを開発しました。私は現在、アプリケーション自体にある "datanucleus.properties"に格納されているJDO接続プロパティを持っています。接続はうまくいきましたが、JNDIとして接続情報を保存して、サーバー上に置いて、戦争そのものには置かないようにしたいと考えています(リモートで展開する際に戦争のファイルを置き換える必要があります)。Datanucleus(JDO)用のTomcat JNDIリソース

私は次のことを試してみました:

  1. は(JDBC/ConnectionDB)アプリケーションのweb.xmlに "Server.xmlを" で

  2. を作成し、私は以下を追加しようとしました私のアプリケーションのコンテキスト

    <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を作成しよう:

    コンテキストcontext = null; PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory( "java:comp/env/jdbc/ConnectionDB"、コンテキスト);このPMFは「datanucleus.properties」の「持続性ユニット」を使用するためにあなたはどちらか指定している(まだこれが存在してdoesntの!):私は自分のアプリケーションを実行すると、私はjavax.jdo.JDOUserExceptionを得る

設定に何が間違っているのか分かりません。

よろしく、

マルセル

+0

マルセルは、私はすべて一緒に動作するようにDataNucleusのとTomcatとMySQLを取得しようとまったく同じことをやっています。私の問題は何らかの理由で私のクラスで動作するEclipseプラグインを手に入れることができません。同じコードはスタンドアロンアプリケーションで動作します。あなたがフォルダ構造とxmlファイルを共有して助けることができたら、どこにormファイルを置くかという問題があると私はほとんど確信しています。私はここに質問を掲載しましたが、答えはまだありませんでした。私を見て、私の質問を見てください。前もって感謝します。 –

答えて

0

JDOHelper.getPersistenceManagerFactory(String)をのJavadocを読んで、それはいくつかのJNDIデータソース文字列を渡すために明らかではありません。

Tomcatのドキュメントを読み、JDO接続の詳細を提供していないデータソースを指定することもあります。

「javax.jdo.option.ConnectionFactoryName」プロパティーのJNDIストリングを指定してpersistence.xmlを等しく指定することができます。私は最終的に私が探していた解決策を見つけたJDOの仕様およびDataNucleusの/ Tomcatのドキュメントごとのように

+0

こんにちはDataNucleus、私はあなたが3点目で言及したことを正確にしたいと思います。しかし、Datanucleusのオンラインドキュメントは正確には役に立たず、私は次のように "JDOHelper.getPersistenceManagerFactory(jndiLocation、context);を呼び出すことになり、JNDI経由でプロパティにアクセスすることになりました。私はServer.xmlにJDOプロパティーをJDNIとして保存しようとしましたが、それは動作しません。 – user652341

+0

JDOHelper.getPersistenceManagerFactoryに永続プロパティー(プロパティー・ファイルまたはマップを使用)を指定するだけです。 – DataNucleus

1

、私はそれをここに投稿し、それが他の誰かを助けるかもしれない:

  1. は、Context「のリソースを作成します。 XMLアプリケーションのweb.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. にそのリソースへの参照を作成します』

    <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接続を使用して持続マネージャファクトリを取得:

    PersistenceManagerFactory pmf; 
    Properties properties = new Properties(); 
    properties.setProperty("datanucleus.ConnectionFactoryName","java:comp/env/jdbc/SyncTestDB"); 
    
関連する問題