Weblogic 10上的Hibernate Validator

时间:2014-01-28 09:38:08

标签: java hibernate validation jpa weblogic

我在Weblogic 10服务器上使用Hibernate Validator部署应用程序时遇到错误。

当应用程序通过注释运行表单验证时,它崩溃并出现错误:

Error 500--Internal Server Error

java.lang.NoSuchMethodError: javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory;
            at org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm.(InterpolationTerm.java:60)
            at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateExpression(ResourceBundleMessageInterpolator.java:227)
            at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateMessage(ResourceBundleMessageInterpolator.java:187)
            at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolate(ResourceBundleMessageInterpolator.java:120)

当应用程序在Tomcat服务器上运行时,不会发生此错误。

我们将weblogic-web-app文件设置为:

<container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

使用app。

对所有lib进行解复

验证库:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.0.1.Final</version>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
    <scope>runtime</scope>
</dependency>

样品验证:

 @NotEmpty(message = "{newQuote.source}")

我们尝试在weblogic.xml中设置preffered包,从weblogic模块中删除JPA lib,两者都没有效果。

对于验证消息加载属性文件看起来有些问题,但可能是什么原因呢?

1 个答案:

答案 0 :(得分:1)

我意识到帖子有点陈旧,可能已经解决了。如果其他人遇到同样的问题,只是想更新。

潜在的问题是多个jar解析/冲突。 Weblogic引用并从系统中加载EL类,提供下面列出的jar(位于modules目录中)

  1. glassfish.el _ *。罐
  2. javax.jsp_1的* .jar
  3. 在我的情况下,我需要指示weblogic服务器从位于应用程序中的jar中加载下面列出的包的类(耳朵中的weblogic-application.xml)

      <prefer-application-packages>
        <package-name>javax.el.*</package-name>
        <package-name>com.sun.el.*</package-name>
      </prefer-application-packages>
    

    如果它只是web-app,那么可以在weblogic.xml中提供相同的配置。

    http://docs.oracle.com/cd/E24329_01/web.1211/e21049/weblogic_xml.htm