2017-02-18 27 views
0

JPAを使用してデータベースにアクセスするJava EEアプリケーションを作成しようとしています。これまでは@Entityアノテーションを使用していましたが、それ以外はすべてデフォルトの状態にしました(たとえば、persistence.xmlファイルは_TimerPoolをjta-data-sourceとして使用していましたが、dbを作成しませんでした)。GlassfishでDerby DBを作成し、Java EEアプリケーションに接続

私は実際のデータベースを試してみたかったのです。私はサービス画面のJavaBD>新しいデータベースを作成し、名前とパスワードで設定しました。

DBのURLます。jdbc:ダービー:// localhostを:1527/PROVA

その後

私はGlassfishののウィザードを使用して自分のアプリケーションのためのpersistence.xmlファイルを作成:

<persistence-unit name="JobsPU" transaction-type="JTA"> 
    <jta-data-source>java:app/Prova</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
     <property name="javax.persistence.schema-generation.database.action" value="create"/> 
     <property name="javax.persistence.schema-generation.database.target" value="database-and-scripts"/> 
     <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/> 
     <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/Prova"/> 
     <property name="javax.persistence.jdbc.user" value="paolo"/> 
     <property name="javax.persistence.jdbc.password" value="paolo"/> 
    </properties> 
    </persistence-unit> 

をそして私はしようとすると、 deploy私はこの例外が発生します:

Grave: Exception while preparing the app : Invalid resource : { ResourceInfo : (jndiName=java:app/Prova__pm), (applicationName=Jobs) } 
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : { ResourceInfo : (jndiName=java:app/Prova__pm), (applicationName=Jobs) } 

JNDIの命名に関連しているようです。私が正直に分かっていないことのうち、私はまだ勉強しようとしています。私がGlassfishのコンソールに行くと、JNDIのリストの下で私のデータベース(JDBC接続プールやJDBCリソースではない)に関連しているようなものは見えません。私は何をすべきか?

ご協力いただきありがとうございます。

+0

これは役に立ちますか? http://stackoverflow.com/questions/13407505/java-jpa-glassfish-invalid-resource-jdbc-default-pm –

+0

"jdbc resources"で新しいをクリックしようとするとGlassfishの最新バージョンが壊れてしまいます素晴らしい例外です。それは素晴らしいことです。 – Paul

+0

あなたはpayaraやwildflyの使用を検討していますか? –

答えて

0

EEコンテナのPersistenceUnitを設定するには、jta-data-sourcetransaction-type="JTA"を使用する必要があります。 jta-data-sourceの場合、EEコンテナ(あなたの場合はglassfishサーバー)で設定する必要があるJDBC ConnectionPoolのJNDI名を指定する必要があります。チュートリアルHow to set up a JDBC Connection Pool on Glassfishがあります。この場合にも

<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/> 
     <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/Prova"/> 
     <property name="javax.persistence.jdbc.user" value="paolo"/> 
     <property name="javax.persistence.jdbc.password" value="paolo"/> 

ようPersistenceUnitプロパティは、(this documentationを参照)EEコンテナでは無視されます。 このプロパティを使用するには、SE環境用のPersistenceUnitを設定します。この前に、記事differences between RESOURCE_LOCAL and JTA persistence contextsを読むことをお勧めします。 SEアプリケーションの設定は次のようになります。

関連する問題