在WebLogic 10.3.5中开始使用JPA时,偶尔会注意到以下异常。大约有一半的时间,我们启动服务器的任何JPA调用都会导致错误,另一半的时间是可以的。
java.lang.ClassCastException::
无法强制转换org.apache.xerces.parsers.StandardParserConfiguration
到org.apache.xerces.xni.parser.XMLParserConfiguration”
试图确定“ myPersistenceXmlFileHere.xml”的版本
在我们的EAR内部是xercesImpl jat,它被项目的其他部分(非JPA)使用而没有问题。我怀疑问题仅仅是来自WebLogic实现jar的干扰。
更新:在Eclipse中重新部署似乎可以重现此问题,而不管下面答案中的设置如何。一旦异常出现一次,它将无法解决,唯一的解决方案是重新启动服务器实例。
最佳答案
通过反复试验,在我们的weblogic-application.xml中添加了以下内容。现在,我们没有任何ClassCastExceptions,因为在这种情况下本地jar应该优先。
<wls:prefer-application-packages>
<wls:package-name>org.eclipse.persistence.*</wls:package-name>
<wls:package-name>org.apache.xerces.xni.parser.*</wls:package-name>
<wls:package-name>org.apache.xerces.parsers.*</wls:package-name>
<wls:package-name>org.apache.xalan.*</wls:package-name>
</wls:prefer-application-packages>