WebLogic error: Unable to acquire JDBC Connection
WebLogic error: Unable to acquire JDBC Connection
WebLogic 12.2.1.3、Hibernate 5.3、Sprnig Data JPA 和 Java EE 出现奇怪的异常。
我在 weblogic 中有一个数据库和一个通用 JDBC 数据源,JNDI 名称为 jdbc/UsersDS.
当我试图列出其中的条目时,我得到了一个非常长的异常,我真的不想将其粘贴到这里,所以我使用了 Pastebin:Here it is。请让我知道,我是否应该将其粘贴在这里。
我对这个人工制品有完全相同的设置,然后我对另一个人工制品有完全相同的设置,它连接到同一台服务器,但连接到不同的数据库,有不同的用户。那个就像一个魅力,这个不是。我能想到的与此相关的唯一区别是,我从中得到错误的人工制品将 Spring Data Redis 作为依赖项包含在 Spring Data JPA 旁边。
Persistence.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="UsersDS" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>jdbc/UsersDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.transaction.factory_class"
value="org.hibernate.transaction.JTATransactionFactory"/>
<property name="hibernate.transaction.manager_lookup_class" value="javax.transaction.TransactionManager"/>
<property name="hibernate.transaction.jta.platform" value="Weblogic"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
</properties>
</persistence-unit>
</persistence>
Ui.: 可能与该问题相关的另一件事是因为我在类路径上同时具有 Spring Data JPA 和 Redis,我不得不将 JpaRepository 接口标记为 @NoRepositoryBean
,否则我会得到一份副本。所以我有一个生成 CDI Repository Bean 的方法:
@Inject
private EntityManager entityManager;
@Produces
@RequestScoped
public UserRepository userRepository() {
return createRepository(UserRepository.class);
}
private <T extends Repository> T createRepository(Class<T> repositoryClass) {
RepositoryFactorySupport factory = new JpaRepositoryFactory(entityManager);
return factory.getRepository(repositoryClass);
}
UI2.: 我还用内存数据库中的 H2 编写了一些集成测试,一切运行顺利
我有解决方案,可能是一些解决方法,或 sg,但我没有别的办法。
那么发生了什么,是我(默认情况下)在 weblogic 数据源全局事务上。关闭它解决了问题
WebLogic 12.2.1.3、Hibernate 5.3、Sprnig Data JPA 和 Java EE 出现奇怪的异常。
我在 weblogic 中有一个数据库和一个通用 JDBC 数据源,JNDI 名称为 jdbc/UsersDS.
当我试图列出其中的条目时,我得到了一个非常长的异常,我真的不想将其粘贴到这里,所以我使用了 Pastebin:Here it is。请让我知道,我是否应该将其粘贴在这里。
我对这个人工制品有完全相同的设置,然后我对另一个人工制品有完全相同的设置,它连接到同一台服务器,但连接到不同的数据库,有不同的用户。那个就像一个魅力,这个不是。我能想到的与此相关的唯一区别是,我从中得到错误的人工制品将 Spring Data Redis 作为依赖项包含在 Spring Data JPA 旁边。
Persistence.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="UsersDS" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>jdbc/UsersDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.transaction.factory_class"
value="org.hibernate.transaction.JTATransactionFactory"/>
<property name="hibernate.transaction.manager_lookup_class" value="javax.transaction.TransactionManager"/>
<property name="hibernate.transaction.jta.platform" value="Weblogic"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
</properties>
</persistence-unit>
</persistence>
Ui.: 可能与该问题相关的另一件事是因为我在类路径上同时具有 Spring Data JPA 和 Redis,我不得不将 JpaRepository 接口标记为 @NoRepositoryBean
,否则我会得到一份副本。所以我有一个生成 CDI Repository Bean 的方法:
@Inject
private EntityManager entityManager;
@Produces
@RequestScoped
public UserRepository userRepository() {
return createRepository(UserRepository.class);
}
private <T extends Repository> T createRepository(Class<T> repositoryClass) {
RepositoryFactorySupport factory = new JpaRepositoryFactory(entityManager);
return factory.getRepository(repositoryClass);
}
UI2.: 我还用内存数据库中的 H2 编写了一些集成测试,一切运行顺利
我有解决方案,可能是一些解决方法,或 sg,但我没有别的办法。
那么发生了什么,是我(默认情况下)在 weblogic 数据源全局事务上。关闭它解决了问题