【问题标题】:WebLogic error: Unable to acquire JDBC ConnectionWebLogic 错误:无法获取 JDBC 连接
【发布时间】:2019-04-18 17:01:33
【问题描述】:

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 编写了一些集成测试,一切运行顺利

【问题讨论】:

  • 我在日志中发现了这一行:SessionFactoryRegistry - Not binding SessionFactory to JNDI, no JNDI name configured 这意味着什么吗?数据库中的表确实被创建了
  • 你也可以发布弹簧配置吗?
  • 没有弹簧配置。这是一个 CDI 环境
  • 所以你想使用jdbc/UsersDS,但你的配置中有jdbc/FiveshellyD。这是错误的。
  • 是的,对不起,我忘记编辑了,我在发布几分钟后修复了配置。我将 UsersDS 替换为 FiveshellyDS,因为我知道该数据源可以工作,因为它可以与其他人工制品一起工作

标签: java spring jakarta-ee weblogic weblogic12c


【解决方案1】:

我有解决方案,它可能是一些解决方法,或 sg,但我没有别的办法。

那么发生了什么,是我(默认情况下)在 weblogic 数据源中进行了全局事务处理。关闭它解决了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 2020-05-06
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2019-01-10
    • 1970-01-01
    相关资源
    最近更新 更多