我正在尝试将我的项目配置为在Weblogic 12.1.3上使用Hibernate Validator 5.1.2运行JPA2.1,但是当我尝试部署项目时,我遇到了问题。
我使用Weblogic 12.1.3的文档页面中描述的手动方法将weblogic配置为使用JPA2.1:http://docs.oracle.com/middleware/1213/wls/EJBAD/using_toplink.htm#EJBAD1508
我想在我的项目中使用hibernate-validator 5.1.2,我将其配置为:
Maven依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.2.Final</version>
</dependency>
weblogic.xml中
<container-descriptor>
<prefer-application-packages>
<!-- hibernate validator 5.1.2 over HV 4.1 -->
<package-name>javax.validation.*</package-name>
<package-name>org.hibernate.validator.*</package-name>
<!-- guava 13 -->
<package-name>com.google.common.collect.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<!-- hibernate validator 5.1.2 over HV 4.1 -->
<resource-name>META-INF/validation-mapping-1.1.xsd</resource-name>
<resource-name>META-INF/validation-configuration-1.1.xsd</resource-name>
</prefer-application-resources>
</container-descriptor>
在部署时,我得到以下异常:
<Aug 1, 2014 10:46:16 AM CEST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "8725280002070" for task "0". Error is: "weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.hibernate.validator.HibernateValidator"
weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.hibernate.validator.HibernateValidator
at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:175)
at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:170)
at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:80)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassNotFoundException: org.hibernate.validator.HibernateValidator
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:357)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:318)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:186)
Truncated. see log file for complete stacktrace
>
当我使用JPA2.0和Hibernate Validator 4.3.1在Weblogic 12.1.2上配置项目时,我没有得到此异常。
有没有人就如何解决这个问题提出建议?
答案 0 :(得分:2)
答案 1 :(得分:1)
由于您激活了JPA 2.1,这意味着JPA的类在最高的类加载器中加载。 Hibernate Validator被JPA类“使用”,因此要求Hibernate类在与JPA类相同或更高的类加载器中可用。
尝试在启动脚本上加载Hibernate JAR和JPA 2.1 JAR。我不确定这是否可行,但这绝对是一个类加载器排序问题。
如果您不确定在哪个类加载器中加载Hibernate类,请使用WebLogic CAT(类加载器分析工具)来查看它应该去哪里。
希望它有所帮助。