【问题标题】:Weblogic 12c and Spring-Data-JPA Deployment JPA 2.1 ConflictWeblogic 12c 和 Spring-Data-JPA 部署 JPA 2.1 冲突
【发布时间】:2016-03-28 10:19:00
【问题描述】:

我正在尝试将 spring-data-jpa、apache-cxf 集成项目部署到 Oracle Weblogic 12c (12.1.3),具有以下依赖项并低于异常。

  • jdk :1.7
  • 网络逻辑:12c(12.1.3)
  • spring.version>4.1.0.RELEASE
  • spring.data.version>1.7.2.RELEASE
  • hibernate.version>4.3.11.Final

到目前为止,我做到了;

  • 尝试删除来自 hibernate-entitymanager 的 JPA 2.1 jar(没有工作,抛出另一个异常)
  • 试图弄清楚spring-data-jpa、spring和hibernate依赖检查(不成功)
  • 尝试为首选包 javax.persistence.* 提供 weblogic-applcation.xml(没有任何改变)
  • 部署到 12.2.1 并且可以正常工作

期待您的宝贵帮助,谢谢

例外

<Warning> <HTTP> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/app-jpa-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/app-jpa-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1568)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:540)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
Truncated. see log file for complete stacktrace 
Caused By:java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;
at org.hibernate.cfg.AnnotationBinder.bindManyToOne(AnnotationBinder.java:2884)
at org.hibernate.cfg.AnnotationBinder.bindOneToOne(AnnotationBinder.java:3051)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1839)
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:963)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:796)
Truncated. see log file for complete stacktrace

mvn pom.xml

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.1.0.RELEASE</spring.version>
    <spring.data.version>1.7.2.RELEASE</spring.data.version>
    <hibernate.version>4.3.11.Final</hibernate.version>
    <hibernate.validator.version>5.1.2.Final</hibernate.validator.version>
    <cxf.version>3.0.0</cxf.version>
    <log4j.version>1.2.17</log4j.version>
    <junit.version>4.12</junit.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>${spring.data.version}</version>
        <exclusions>
            <exclusion>
                <artifactId>spring-beans</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-core</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-aop</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-context</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-tx</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-orm</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-framework-bom</artifactId>
        <version>${spring.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
        <scope>compile</scope>
    </dependency>


    <!-- LOG -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.7</version>
    </dependency>
    <!-- TEST -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- Object2Object mapping -->
    <dependency>
        <groupId>net.sf.dozer</groupId>
        <artifactId>dozer</artifactId>
        <version>5.5.1</version>
    </dependency>


    <!-- ORACLE -->
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>
</dependencies>

【问题讨论】:

    标签: java hibernate spring-data weblogic12c jpa-2.1


    【解决方案1】:

    JoinColumn.foreignKey() 是在 JPA 2.1 中引入的,它是在 Hibernate 4.3 中实现的,因此 WebLogic 可能正在使用它自己的具有旧版本的 JPA JAR。 您的代码在 Weblogic 12.2.1 上运行没有问题的事实将证实这一点。
    JPA 2.1 是 Java EE 7 标准的一部分,根据 this 从 WebLogic 12.2.1 开始支持

    恕我直言,您在尝试在 WebLogic 上设置首选包时走在了正确的轨道上。 尝试通过这个tutorial 将 JPA 2.1 库添加到 WebLogic Server 类路径。

    【讨论】:

    • 谢谢,它成功了。但我仍然不明白为什么 weblogic 忽略了 weblogic-application.xml 提供的首选包定义。 jpa2.1.jar 也位于应用程序的 lib 文件夹下。
    • @sabri 您是否设法解决了 JPA 和 weblog 12.1 的所有依赖问题?
    • @Chrispie 我们确实将所有版本升级到; spring.version>4.2.8.RELEASE,spring.data.version>1.10.5.RELEASE,hibernate.version>4.3.11.Final,hibernate.validator.version>5.1.2.Final,cxf.version>3.1. 6.现在它正在工作。还有JDK1.8.0_65。 weblogic.xml 没有任何额外的首选包声明。
    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2015-04-04
    • 2017-11-29
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多