首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebLogic12c HibernateValidator ClassLoading问题

WebLogic12c HibernateValidator ClassLoading问题
EN

Stack Overflow用户
提问于 2014-03-05 19:27:40
回答 1查看 1.3K关注 0票数 0

作为JEE6规范(WL12)的一部分的验证框架。我们的应用程序的WL10和WL12版本都是使用以下开源库部署的:

  1. JSR-303 /确认-api.jar(1.0版)
  2. Hibernate Validator (4.2.0版)

但是,库也与WL 12 (模块目录)捆绑在一起。注意,Hibernate Validator版本略有不同。

  1. modules.javax.validation_1.0.0.jar
  2. hibernate.validator_4.1.0.jar

通过我们的WL12运行,我们将获得以下异常:

代码语言:javascript
复制
javax.validation.ValidationException: Unable to get available provider 

我们的下一个尝试是使用WebLogic FilteringClassLoader来选择我们应用程序中的库(APP-INF/lib目录),方法是在weblogic-application.xml文件中指定它们(即选择我们的版本而不是WebLogic的)。我们已经为WL10中的其他几个开源库做了这样的工作:

代码语言:javascript
复制
<prefer-application-packages>
  <package-name>com.google.common.*</package-name>    
  <package-name>org.apache.commons.lang.*</package-name>
  <package-name>org.apache.commons.logging.*</package-name>
  <package-name>org.apache.commons.beanutils.*</package-name>
  <package-name>org.apache.commons.collections.*</package-name>
  <package-name>antlr.*</package-name>
  <package-name>javax.validation.*</package-name>
  <package-name>org.hibernate.validator.*</package-name>
</prefer-application-packages>

在进行了更改之后,我们的应用程序遇到了以下运行时错误,试图处理任何使用验证框架的请求:

代码语言:javascript
复制
javax.validation.ValidationException: Unable to get available provider resolvers.
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:259)
    at web20.hibernate.validation.ValidatorFactoryConfigurator.getValidatorFactory(ValidatorFactoryConfigurator.java:39)
    at web20.hibernate.validation.ValidationHandlerImpl.handleHibernateValidations(ValidationHandlerImpl.java:180)
    at web20.hibernate.validation.ValidationHandlerImpl.performValidation(ValidationHandlerImpl.java:255)
    at web20.hibernate.validation.ValidationHandlerImpl.validateAndFormatMessages(ValidationHandlerImpl.java:302)
    at web20.hibernate.validation.ValidationHandlerImpl.validateUsingHibernateGroups(ValidationHandlerImpl.java:113)
    at service.serviceapp.performValidations(serviceapp.java:392)
    at service.serviceapp.performValidations(serviceapp.java:379)
    at service.TransactionalServiceImpl.search(TransactionalServiceImpl.java:300)
EN

回答 1

Stack Overflow用户

发布于 2014-03-07 10:13:36

考虑到Bean验证是EE标准的一部分,我假设存在一些导致问题的代码Bean验证集成代码。我认为有两种可能的解决办法:

  • 修补WL实例并升级到要使用的Validator版本
  • 尝试编写自己的ValidationProvider。在内部,它只能委托给Hibernate Validator类。如果然后向应用程序添加validation.xml,并指定自定义提供程序,则WL应该引导此应用程序。我不知道这能不能用。关于WL和Bean验证的集成,有很多未知的东西,我还不太清楚。

就我个人而言,我想我只是想升级WL中使用的Validator版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22207310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档