Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 玻璃鱼不具有POSTGRES特性_Java_Postgresql_Ejb 3.0_Glassfish 3 - Fatal编程技术网

Java 玻璃鱼不具有POSTGRES特性

Java 玻璃鱼不具有POSTGRES特性,java,postgresql,ejb-3.0,glassfish-3,Java,Postgresql,Ejb 3.0,Glassfish 3,我有EJB3实体bean,它将保存在postgresdb中。我正在使用GlassFish3AppServer部署EJB 当我使用web层调用EJB时,会调用DB,但Glassfish抛出以下异常 javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=135;_ThreadName=Thread-1;|javax.persistence.PersistenceException: org.hibernat

我有EJB3实体bean,它将保存在postgresdb中。我正在使用GlassFish3AppServer部署EJB

当我使用web层调用EJB时,会调用DB,但Glassfish抛出以下异常

  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)
其根本原因是什么

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.
与Postgres DB的连接已建立,我可以使用pgAdmin工具查看数据。我可以在日志中看到正在执行的查询。从日志中我们可以看到Glassfish正在使用derby客户端获取连接

我需要在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>

org.hibernate.ejb.HibernatePersistence
com.cricinfo.domain.Player
我能够通过使用直接使用EntityManagerFactory的独立类来持久化和获取数据

编辑:解决方案


我读了更多关于它的内容,意识到我在persistence.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>
<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>

org.hibernate.ejb.HibernatePersistence
jdbc/DefaultDS
com.cricinfo.domain.Player
事务类型设置为JTA,使用数据源代替连接属性

我还登录到Glassfish管理控制台,并从CommonTasks->Resources->JDBC树中配置JDBC连接池和JDBC资源


我现在可以得到细节了。

我读了更多关于它的内容,并意识到我在persistene.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>
<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>

org.hibernate.ejb.HibernatePersistence
jdbc/DefaultDS
com.cricinfo.domain.Player
事务类型设置为JTA,使用数据源代替连接属性

我还登录到Glassfish管理控制台,并从CommonTasks->Resources->JDBC树中配置JDBC连接池和JDBC资源

我现在可以得到细节了