Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-12032

EJB subsystem doesn't set TCCL when deserializing request

    Details

    • Steps to Reproduce:
      Hide

      1. Deploy Reproducer.ear
      2.

      unzip rmitest.zip
      cd rmitest/
      mvn clean package
      

      3. Run the test:

      • EAP6: java -cp jboss-client.jar:target/rmitest-1.0-SNAPSHOT.jar remoteobjects.RemoteObjectTesterBean eap6
      • EAP7: java -cp jboss-client.jar:target/rmitest-1.0-SNAPSHOT.jar remoteobjects.RemoteObjectTesterBean eap7

      (See JBEAP-16725 for attachments.)

      Show
      1. Deploy Reproducer.ear 2. unzip rmitest.zip cd rmitest/ mvn clean package 3. Run the test: EAP6: java -cp jboss-client.jar:target/rmitest-1.0-SNAPSHOT.jar remoteobjects.RemoteObjectTesterBean eap6 EAP7: java -cp jboss-client.jar:target/rmitest-1.0-SNAPSHOT.jar remoteobjects.RemoteObjectTesterBean eap7 (See JBEAP-16725 for attachments.)

      Description

      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.

      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)
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  Unassigned
                  Reporter:
                  thofman Tomas Hofman
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  5 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: