作为JEE6规范(WL12)的一部分的验证框架。我们的应用程序的WL10和WL12版本都是使用以下开源库部署的:
但是,库也与WL 12 (模块目录)捆绑在一起。注意,Hibernate Validator版本略有不同。
通过我们的WL12运行,我们将获得以下异常:
javax.validation.ValidationException: Unable to get available provider 我们的下一个尝试是使用WebLogic FilteringClassLoader来选择我们应用程序中的库(APP-INF/lib目录),方法是在weblogic-application.xml文件中指定它们(即选择我们的版本而不是WebLogic的)。我们已经为WL10中的其他几个开源库做了这样的工作:
<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>在进行了更改之后,我们的应用程序遇到了以下运行时错误,试图处理任何使用验证框架的请求:
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)发布于 2014-03-07 10:13:36
考虑到Bean验证是EE标准的一部分,我假设存在一些导致问题的代码Bean验证集成代码。我认为有两种可能的解决办法:
就我个人而言,我想我只是想升级WL中使用的Validator版本。
https://stackoverflow.com/questions/22207310
复制相似问题