我正在使用jpa 2(EclipseLink),ejb 3和PrimeFaces开发一个应用程序,它分为jar(和jpa ejb)和一个war,同时试图让我得到这个错误:
Exception is: java.rmi.UnmarshalException: Incoming message header or abbreviation processing failed; nested exception is: java.io.InvalidClassException: org.eclipse.persistence.internal.helper.DatabaseTable; Local class incompatible: stream serialVersionUID = 7408378167056177847 classdesc, the local class serialVersionUID = -8,219,935,847,209,476,671 at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException (RemoteBusinessIntfProxy.java:121) at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke (Remote
我清楚这是SERIAL错误ID的一个版本,但我该如何解决?使用Eclipse作为ID。
感谢您的帮助!!
答案 0 :(得分:2)
您可以尝试指示WebLogic Server更喜欢捆绑的jar而不是自己的jar。这可以在weblogic.xml
部署描述符中完成,它看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
第二个想法,持久性API是ejb jar依赖项,此设置仅适用于war模块。所以你可以试试weblogic-application.xml
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://xmlns.oracle.com/weblogic/weblogic-application”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=”http://xmlns.oracle.com/weblogic/weblogic-application
http://xmlns.oracle.com/weblogic/weblogic-application/1.0/weblogic-application.xsd">
<prefer-application-packages>
<package-name>org.eclipse.persistence.internal.helper.*</package-name>
</prefer-application-packages>
</weblogic-application>
答案 1 :(得分:1)
我之前没有见过这种类型的错误,但我首先想到的是你有一个类似jar的多个版本。具体看起来像org.eclipse.persistence - &gt; javax.persistence。它可能是用一个jar /类序列化的,并用另一个jar /类反序列化。
通常在与J2EE容器和多个jar有关的错误中,application-containr中存在一个jar / version,如weblogic(可能在endorsed目录中),另一个与应用程序捆绑在一起。
如果是这种情况,解决方案是不在应用程序中包含持久性jar并委托给容器。如果您使用的是maven / gradle,请将工件标记为provided
答案 2 :(得分:1)
您好解决了这个问题,并希望与您分享,我花了一个星期才找到答案。我正在使用weblogic 10.3.5进行开发,即使我使用相同的jars EclipseLink和javax.persistence在bea / modules中来编译我的项目,它也无法正常工作。我卸载了服务器并再次安装,认为它可能是服务器的问题但总是得到相同的结果。我也尝试将jar嵌入应用程序中,但都没有工作。我将我的weblogic服务器迁移到版本10.3.6,这就是答案,我的应用程序工作,因为它最初不知道为什么会出现这个问题,但是修复了应用程序服务器的版本。非常感谢所有回复的人。