2011-07-12 12 views
1

私はPostgres DBに保存されるEJB3 Entity Beanを持っています。 GlassFish 3 Appサーバーを使用してEJBを展開しています。GlassfishがPOSTGRESプロパティを取得しない

私は私のウェブ層を使用してEJBへの呼び出しを行う場合は、DBの呼び出しが行われたがGlassfishのは、次の例外をスローしているその根本原因

Caused by: org.hibernate.exception.JDBCConnectionException: could not inspect JDBC autocommit mode 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) 
at org.hibernate.jdbc.JDBCContext.afterNontransactionalQuery(JDBCContext.java:296) 
at org.hibernate.impl.SessionImpl.afterOperation(SessionImpl.java:595) 
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:1010) 
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:998) 
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:614) 
... 96 more 
Caused by: java.sql.SQLNonTransientConnectionException: No current connection. 
at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source) 
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source) 
at org.apache.derby.client.am.Connection.getAutoCommit(Unknown Source) 
at com.sun.gjc.spi.base.ConnectionHolder.getAutoCommit(ConnectionHolder.java:307) 
at org.hibernate.jdbc.ConnectionManager.isAutoCommit(ConnectionManager.java:212) 
at org.hibernate.jdbc.JDBCContext.afterNontransactionalQuery(JDBCContext.java:287) 
... 100 more 
Caused by: org.apache.derby.client.am.SqlException: No current connection. 

への接続である

javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=135;_ThreadName=Thread-1;|javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: could not inspect JDBC autocommit mode 
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1215) 
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:635) 
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:589) 
at com.cricinfo.session.service.PlayerService.getPlayer(PlayerService.java:41) 

Postgres DBが起動していて、pgAdminツールを使用してデータを表示できます。私は、クエリがログで実行されているのを見ることができます。ログから、Glassfishがダービークライアントを使用して接続をフェッチしていることがわかります。

Glassfishで必要な設定はありますか?

persistence.xmlのは、次のとおりです。

<persistence-unit name="PlayerApp" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <class>com.cricinfo.domain.Player</class> 
    <properties> 
     <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" 
      /> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" 
      /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.connection.url" 
      value="jdbc:postgresql://localhost:5432/PlayerAppDB" /> <property name="hibernate.show_sql" 
      value="true" /> <property name="hibernate.format_sql" value="true" /> <property 
      name="hibernate.connection.username" value="postgres" /> <property name="hibernate.connection.password" 
      value="postgres" /> 
    </properties> 
</persistence-unit> 

私は直接のEntityManagerFactoryを使用するスタンドアロンクラスを使用してデータを永続化して取得することができています。

EDIT:SOLUTION

私はもう少しそれについて読んで、私はpersitence.xmlで間違いをしていたことに気づきました。今、persistence.xmlのは、次のようになります。

<persistence-unit name="PlayerApp" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>jdbc/DefaultDS</jta-data-source> 
    <class>com.cricinfo.domain.Player</class> 
</persistence-unit> 

トランザクション・タイプは、JTAに作られたとデータソースではなく、接続プロパティを使用しました。

は、私はまた、GlassFish管理コンソールにログインし、私は今の詳細を取得することができる午前ツリーCommonTasks->リソース - > JDBC

からJDBC接続プールとJDBCリソースを設定しました。

答えて

0

私はそれをもう少し読んで、私がpersitence.xmlで間違いをしていることに気付きました。今、persistence.xmlのは、次のようになります。

<persistence-unit name="PlayerApp" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>jdbc/DefaultDS</jta-data-source> 
    <class>com.cricinfo.domain.Player</class> 
</persistence-unit> 

トランザクション・タイプは、JTAに作られたとデータソースではなく、接続プロパティを使用しました。

は、私はまた、GlassFish管理コンソールにログインし、私は今の詳細を取得することができる午前ツリーCommonTasks->リソース - > JDBC

からJDBC接続プールとJDBCリソースを設定しました。

関連する問題