在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>

10-04 20:22