【问题标题】:WebLogic 12c (12.2.1.4) with Hibernate 5.4带有 Hibernate 5.4 的 WebLogic 12c (12.2.1.4)
【发布时间】:2020-05-11 08:19:41
【问题描述】:

我使用 Hibernate 5.2.18 在 WebLogic 12c (12.2.1.4) 上部署了一个应用程序。 Weblogic 12c 文档引用了 JPA 2.1 兼容性,而 Hibernate 5.3+ 需要 JPA 2.2。我可以将 JPA 2.2 API 添加到我的启动类路径并使用 Hibernate 5.3+ 还是应该暂时坚持使用 Hibernate 5.2?

【问题讨论】:

  • 你在应用中使用spring吗?
  • 是的,它是 Spring 5.2

标签: spring hibernate jpa weblogic12c


【解决方案1】:

是的,这种配置是可能的。

为避免与 WebLogic 内置 JPA 功能发生冲突,您应该执行以下操作:

  1. 根据this

在完整的 Java EE 环境中,考虑从 JNDI 获取您的 EntityManagerFactory。或者,在您的 LocalContainerEntityManagerFactoryBean 定义(例如 META-INF/my-persistence.xml)上指定自定义 persistenceXmlLocation,并在应用程序 jar 文件中仅包含具有该名称的描述符。因为 Java EE 服务器只查找默认的 META-INF/persistence.xml 文件,所以它会忽略此类自定义持久性单元,从而避免与 Spring 驱动的 JPA 设置发生冲突。

你可以在 spring 上下文配置中使用类似的东西。

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <!-- ... -->
    <jee:jndi-lookup id="DS" jndi-name="appDS" />
    <bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
       <property name="persistenceXmlLocation" value="classpath:META-INF/app-persistence.xml" />
       <property name="dataSource" ref="DS" />
    </bean>
    <!-- ... -->
</beans>
  1. 根据this

要配置FilteringClassLoader 以指定从应用程序加载某个包,请将prefer-application-packages 描述符元素添加到weblogic-application.xml,该元素详细说明要从应用程序加载的包列表。

您应该将以下 sn-p 添加到您的 META-INF/weblogic-application.xml

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application>
    <prefer-application-packages>
        <!-- ... -->
        <package-name>javax.persistence.*</package-name>
    </prefer-application-packages>
</weblogic-application>

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 2012-11-18
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多