gpt4 book ai didi

java - Glassfish 没有获取 POSTGRES 属性

转载 作者:行者123 更新时间:2023-11-29 14:02:17 25 4
gpt4 key购买 nike

我有要保存在 Postgres 数据库中的 EJB3 实体 bean。我正在使用 Glassfish 3 App 服务器部署 EJB。

当我使用我的 Web 层调用 EJB 时,进行了数据库调用,但 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 数据库的连接已建立,我可以使用 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>

我能够通过使用直接使用 EntityManagerFactory 的独立类来持久化和获取数据。

编辑:解决方案

我阅读了更多内容,意识到我在 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-> Resources->JDBC 配置 JDBC 连接池和 JDBC 资源

我现在可以得到详细信息。

最佳答案

我阅读了更多内容,意识到我在 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-> Resources->JDBC 配置 JDBC 连接池和 JDBC 资源

我现在可以得到详细信息。

关于java - Glassfish 没有获取 POSTGRES 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com