LinkageError при вызове Weblogic EJB из клиентского приложения платформы NetBeans

Я получаю следующую ошибку связывания в приложении платформы NetBeans, где я вызываю EJB, работающий на сервере Weblogic. Проблема, по-видимому, заключается в том, что wlfullclient.jar (клиент Weblogic), предоставленный Oracle, и rt.jar в JDK (опробованный с JDK 6 и 7) содержат одни и те же пакеты CORBA. Файл wlfullclient.jar включается в виде обернутого JAR-файла в модуль, выполняющий вызов EJB.

Я написал автономную программу на Java, которая делает то же самое и работает нормально.

Любая помощь будет оценена.

java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "weblogic.corba.utils.ValueHandlerImpl.readValue(Lorg/omg/CORBA/portable/InputStream;ILjava/lang/Class;Ljava/lang/String;Lorg/omg/SendingContext/RunTime;)Ljava/io/Serializable;" the class loader (instance of org/netbeans/StandardModule$OneModuleClassLoader) of the current class, weblogic/corba/utils/ValueHandlerImpl, and the class loader (instance of <bootloader>) for interface javax/rmi/CORBA/ValueHandler have different Class objects for the type org/omg/SendingContext/RunTime used in the signature 
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:1963) 
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:2001) 
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2266) 
at weblogic.rmi.internal.ObjectIO.writeObject(ObjectIO.java:40) 
at weblogic.iiop.OutboundRequestImpl.flush(OutboundRequestImpl.java:125) 
at weblogic.iiop.OutboundRequestImpl.sendReceive(OutboundRequestImpl.java:160) 
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:345) 
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259) 
at za.vsp.ejb.accesscontrol.AccessControl_IIOP_WLStub.queryRolePermissionsByUser(Unknown Source) 
at za.vsp.bd.accesscontrol.AccessControlBDRemoteCache.queryRolePermissionsByUser(AccessControlBDRemoteCache.java:502) 
at za.vsp.bd.accesscontrol.AccessControlBDRemoteCache.hasPermission(AccessControlBDRemoteCache.java:573) 
at za.vsp.util.modules.RichClientModuleInstall$1.run(RichClientModuleInstall.java:351) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:337) 
at za.vsp.util.modules.RichClientModuleInstall.testThatShit(RichClientModuleInstall.java:349) 
at za.vsp.util.modules.RichClientModuleInstall.restored(RichClientModuleInstall.java:504) 
at org.netbeans.core.startup.NbInstaller.loadCode(NbInstaller.java:426) 
[catch] at org.netbeans.core.startup.NbInstaller.load(NbInstaller.java:366) 
at org.netbeans.ModuleManager.enable(ModuleManager.java:1025) 
at org.netbeans.core.startup.ModuleList.installNew(ModuleList.java:318) 
at org.netbeans.core.startup.ModuleList.trigger(ModuleList.java:254) 
at org.netbeans.core.startup.ModuleSystem.restore(ModuleSystem.java:294) 
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:172) 
at org.netbeans.core.startup.Main.start(Main.java:308) 
at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:123) 
at java.lang.Thread.run(Thread.java:662)

person rudolfv    schedule 16.11.2011    source источник


Ответы (1)


Мне удалось решить эту проблему, удалив wlfullclient.jar и заменив его минимальным wlclient.jar, включенным в каталог /wlserver_10.3/server/lib сервера приложений Weblogic. Я добавил wlclient.jar в виде упакованного JAR-файла в один из модулей проекта.

person rudolfv    schedule 17.11.2011