java - Weblogic 10 上的 Hibernate validator

标签 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>

所有库都与应用程序一起解聚。

验证库:

<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 中设置首选包,从 weblogic 模块中删除 JPA 库,但都没有效果。

加载验证消息的属性文件时似乎出现了一些问题,但这可能是什么原因?

最佳答案

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

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

  1. glassfish.el_*.jar
  2. javax.jsp_1*.jar

就我而言,我需要指示 weblogic 服务器从应用程序内的 jar 加载下面列出的包的类(ear 中的 weblogic-application.xml)

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

如果只是 Web 应用程序,可以在 weblogic.xml 中提供相同的配置。

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

关于java - Weblogic 10 上的 Hibernate validator ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21401839/

相关文章:

java - 如何在 JFreeChart 中设置条形样式

java - 添加Groovy脚本以通过Gradle Android运行

java - 如果玩!自动为每个请求启动一个事务并管理它,为什么在方法上放置@Transactional?

java - 我们如何调试我们的生产 Struts/Hibernate 应用程序?

Spring Boot 自定义约束验证器未注入(inject)服务

java - 对编写媒体转换器感到困惑

java - Jaxb 解码不起作用

java - 是否可以*转换*多态 Hibernate/JPA 实体的类型?

SOAP 响应模式验证

java - Java 中误导性的 XSD 验证错误