jpa 2.1 spring boot with web sphere 8.5.5.8(完整版) jdk 7

Posted

技术标签:

【中文标题】jpa 2.1 spring boot with web sphere 8.5.5.8(完整版) jdk 7【英文标题】:jpa 2.1 spring boot with web sphere 8.5.5.8(full version) jdk 7 【发布时间】:2016-07-11 11:52:34 【问题描述】:

我遵循了 jeff 建议的方法 https://gist.github.com/jeffsheets/aec3e94870ef903ce7efe33e00563d3c

我能够克服 jpa 2.1 java.lang.ClassCastException:com.ibm.websphere.persistence.PersistenceProviderImpl 与 javax.persistence.spi.PersistenceProvider 不兼容。

但我收到以下错误 名为 com.x...JerseyConfig 的 servlet 无法动态添加,因为已存在同名的 servlet 配置。我正在使用带有 JDK 1.7 spring boot 1.4.0.M3 的 WebSphere 8.5.5.8 完整版。

在我的 JerseyConfig.java 中

@Component
@PropertySources(value = 
    @PropertySource("classpath:application.properties"),
    @PropertySource("classpath:ValidationMessages.properties"))
@DependsOn("hibernatePersistenceProviderResolver")
public class JerseyConfig extends ResourceConfig 
    public JerseyConfig() 
        packages("com.x.package");
    

感谢任何提示或指点。

【问题讨论】:

【参考方案1】:

我做了以下工作来使它工作(除了前面提到的@DependsOn)。

1) 先加载本地类加载器,最后加载父类。

2) 将 WebSphere Appserver com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine 的 JVM 属性添加为 true,以便仅使用应用程序附带的 JAX RS。 (它修复了 servlet 名称已经存在)。 3)当我运行我的 REST 端点成功部署后,我在运行时收到以下错误。

UOWManager 事务处理失败;嵌套异常是 com.ibm.wsspi.uow.UOWException: java.lang.VerifyError: com/ibm/websphere/uow/UOWSynchronizationRegistry.registerInterposedSynchronizat ion(Ljavax/transaction/Synchronization)V

要解决此问题,请添加 spring.jta.enabled=false 以使用 WebShpere JTA。 (理想情况下更喜欢覆盖web sphere JTA并使用spring JTA,需要想办法)。

【讨论】:

以上是关于jpa 2.1 spring boot with web sphere 8.5.5.8(完整版) jdk 7的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot with Spring-Data-JPA学习案例

Spring Boot with JOOQ 和 Spring Data JPA 之间的技术差异

当加载 spring-boot 和 spring-data-jpa 时,Hibernate 无法加载 JPA 2.1 Converter

Spring Boot 2.1 缺少多个 org.hibernate.jpa.event 类

外键在一对多关系中始终为空 - Spring Boot Data with JPA

带有 Spring Boot 和 websphere 8.5.0.1 的 JPA 2.1