【问题标题】:Weblogic 12.2.1.1: deployment errorWeblogic 12.2.1.1:部署错误
【发布时间】:2016-10-21 10:11:55
【问题描述】:

日志:

org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0”的bean时出错:调用init方法失败;嵌套异常是 java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider; 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)

我认为它与javax.validation api有关,我尝试了1.0和1.1,都失败了

相同的 WAR 文件在 Weblogic 10.3.6 中运行良好。 下面是我的 pom.xml

<properties>
    <spring.maven.artifact.version>4.2.3.RELEASE</spring.maven.artifact.version>
    <spring.security.version>4.0.1.RELEASE</spring.security.version>
    <spring.batch.core.version>3.0.3.RELEASE</spring.batch.core.version>
    <slf4j.version>1.7.12</slf4j.version>
    <junit.version>4.12</junit.version>
    <jbehave.version>3.9.5</jbehave.version>
    <jbehave.web.selenium.version>3.5.5</jbehave.web.selenium.version>
    <validation.api.version>1.0.0.GA</validation.api.version>
    <hibernate.validator.version>4.3.2.Final</hibernate.validator.version>
    <joda.time.version>2.7</joda.time.version>
    <mockito.version>1.10.19</mockito.version>
    <hsqldb.version>2.3.2</hsqldb.version>
    <jackson.version>1.9.13</jackson.version>
    <xstream.version>1.4.8</xstream.version>
    <commons.jxpath.version>1.3</commons.jxpath.version>
    <commons.io.version>2.4</commons.io.version>
    <commons.lang.version>2.6</commons.lang.version>
    <commons-lang3.version>3.4</commons-lang3.version>
    <apache.poi.version>3.9</apache.poi.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.6.8</version>
    </dependency>

    <!-- Audit trail xpath queries -->
    <dependency>
        <groupId>commons-jxpath</groupId>
        <artifactId>commons-jxpath</artifactId>
        <version>${commons.jxpath.version}</version>
        <exclusions>
            <exclusion>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.codehaus.jettison</groupId>
                <artifactId>jettison</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.1</version>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>${commons.lang.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.api.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.api.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>${apache.poi.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>${apache.poi.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>


    <!-- Test specific jars -->
    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>${hsqldb.version}</version>
        <scope>test</scope>
    </dependency>


    <dependency>
        <groupId>com.vividsolutions</groupId>
        <artifactId>jts</artifactId>
        <version>${vividsolutions.jts.api.version}</version>
    </dependency>
    <!-- test scoped dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.maven.artifact.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- Swagger -->
    <dependency>
        <groupId>com.mangofactory</groupId>
        <artifactId>swagger-springmvc</artifactId>
        <version>0.5.2</version>
    </dependency>


    <!-- JSR-303 standard Java Bean Validation annotations -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>${validation.api.version}</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda.time.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${hibernate.validator.version}</version>
    </dependency>
    <dependency>
        <groupId>de.grundid.opendatalab</groupId>
        <artifactId>geojson-jackson</artifactId>
        <version>1.5.1</version>
    </dependency>
    <!-- Servlet API -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons-lang3.version}</version>
    </dependency>

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>${mockito.version}</version>
    </dependency>

下面是我的 weblogic.xml

<weblogic-web-app>
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
        <session-monitoring-enabled>true</session-monitoring-enabled>
        <servlet-reload-check-secs>-1</servlet-reload-check-secs>
    </container-descriptor>
    <context-root>business-services</context-root>
</weblogic-web-app> 

请帮助我解决问题。谢谢。

【问题讨论】:

    标签: spring hibernate maven validation weblogic12c


    【解决方案1】:

    此问题已解决。

    我已将 hibernate.validator 版本升级到 5.3.0.Final,validation.api 版本升级到 1.1.0.Final。

    Weblogic 12.2.1.1 仅支持 Validator api 1.1.0,对应的 Hibernate 验证器版本为 5.3.0。

    谢谢。

    【讨论】:

      【解决方案2】:

      2.x版本有你要的方法

      Reference to source code

      【讨论】:

      • org.hibernate.validator.engine.ConfigurationImpl 这个类在所有版本中都有。
      • 但 getDefaultParameterNameProvider 方法并不包含在每个版本中。
      • 通过更新验证器 api 和休眠验证器版本解决了这个问题,但是您让我朝着正确的方向前进,休眠验证器版本 5.3.0 具有 getDefaultParameterNameProvider 方法。非常感谢。
      猜你喜欢
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2014-01-31
      • 2019-02-05
      • 2015-11-14
      • 1970-01-01
      相关资源
      最近更新 更多