[
https://issues.jboss.org/browse/WFLY-12032?page=com.atlassian.jira.plugin...
]
David Lloyd commented on WFLY-12032:
------------------------------------
Sure, it is related to class loading, but that's a very broad area with impacts in
many systems and doesn't always mean it's a problem with JBoss Modules. In
particular JBoss Modules is not sensitive to time delays, as its class loading algorithm
is generally deterministic. In this case I'd look at how RMI is maintaining its
resolution cache; perhaps the cache is not updated until after the entire message is
deserialized.
java.rmi is not visible from wildfly.extension.io module
--------------------------------------------------------
Key: WFLY-12032
URL:
https://issues.jboss.org/browse/WFLY-12032
Project: WildFly
Issue Type: Bug
Affects Versions: 16.0.0.Final
Reporter: Tomas Hofman
Priority: Major
This is follow up issue for JBEAP-16725, which was resolved with a workaround - javax.rmi
was added as a dependency of wildfly.extension.io module.
The root cause is probably inside jboss-modules.
The issue is following:
* a standalone EJB client invokes remote EJB, and passes an object as an argument;
* server (trying to use the remote object) fails with
"java.lang.ClassNotFoundException: java.rmi.dgc.Lease" (stacktrace bellow).
If a short delay ({{Thread.sleep(100)}}) is introduced on the server side, before
manipulating the remote object, the invocation succeeds.
{code}
java.lang.ClassNotFoundException: java.rmi.dgc.Lease from [Module
"org.wildfly.extension.io" version 6.0.12.Final-redhat-00001 from local module
loader @6a024a67 (finder: local module finder @7921b0a2 (roots:
/tmp/jboss-eap-7.2/modules,/tmp/jboss-eap-7.2/modules/system/layers/base))] (no security
manager: RMI class loader disabled)
(default task-2)
java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:97)
(default task-2) sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:396)
(default task-2) sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:186)
(default task-2) java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:637)
(default task-2) java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:264)
(default task-2)
sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:219)
(default task-2) java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1868)
(default task-2) java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751)
(default task-2)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042)
(default task-2) java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
(default task-2) java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
(default task-2) sun.rmi.transport.DGCImpl_Stub.dirty(DGCImpl_Stub.java:125)
(default task-2)
sun.rmi.transport.DGCClient$EndpointEntry.makeDirtyCall(DGCClient.java:382)
(default task-2)
sun.rmi.transport.DGCClient$EndpointEntry.registerRefs(DGCClient.java:324)
(default task-2) sun.rmi.transport.DGCClient.registerRefs(DGCClient.java:160)
(default task-2) sun.rmi.transport.LiveRef.read(LiveRef.java:312)
(default task-2) sun.rmi.server.UnicastRef.readExternal(UnicastRef.java:489)
(default task-2) java.rmi.server.RemoteObject.readObject(RemoteObject.java:455)
(default task-2)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
(default task-2)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
(default task-2)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
(default task-2) java.lang.reflect.Method.invoke(Method.java:498)
(default task-2)
org.jboss.marshalling.reflect.JDKSpecific$SerMethods.callReadObject(JDKSpecific.java:179)
(default task-2)
org.jboss.marshalling.reflect.SerializableClass.callReadObject(SerializableClass.java:212)
(default task-2)
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1746)
(default task-2)
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1715)
(default task-2)
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1715)
(default task-2)
org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1395)
(default task-2)
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
(default task-2)
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:205)
(default task-2)
org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41)
(default task-2)
org.jboss.ejb.protocol.remote.EJBServerChannel$RemotingInvocationRequest.getRequestContent(EJBServerChannel.java:813)
(default task-2)
org.jboss.as.ejb3.remote.AssociationImpl.receiveInvocationRequest(AssociationImpl.java:130)
(default task-2)
org.jboss.ejb.protocol.remote.EJBServerChannel$ReceiverImpl.handleInvocationRequest(EJBServerChannel.java:451)
(default task-2)
org.jboss.ejb.protocol.remote.EJBServerChannel$ReceiverImpl.handleMessage(EJBServerChannel.java:189)
(default task-2)
org.jboss.remoting3.remote.RemoteConnectionChannel.lambda$handleMessageData$3(RemoteConnectionChannel.java:430)
(default task-2)
org.jboss.remoting3.EndpointImpl$TrackingExecutor.lambda$execute$0(EndpointImpl.java:949)
(default task-2)
org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
(default task-2)
org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
(default task-2)
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
(default task-2)
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
(default task-2) java.lang.Thread.run(Thread.java:748)
{code}
--
This message was sent by Atlassian Jira
(v7.12.1#712002)