[jboss-jira] [JBoss JIRA] (AS7-5496) Hibernate proxy class not found in remote EJB call

Uwe Seimet (JIRA) jira-events at lists.jboss.org
Wed Sep 5 15:26:33 EDT 2012


Uwe Seimet created AS7-5496:
-------------------------------

             Summary: Hibernate proxy class not found in remote EJB call
                 Key: AS7-5496
                 URL: https://issues.jboss.org/browse/AS7-5496
             Project: Application Server 7
          Issue Type: Bug
          Components: Class Loading
    Affects Versions: 7.1.2.Final (EAP), 7.1.3.Final (EAP)
         Environment: Java 1.6.0_35 and Java 1.7.0_07
Mac OS X 10.8.1, Windows XP and Gentoo Linux 3.5.3
            Reporter: Uwe Seimet
            Assignee: David Lloyd


Prerequisites:

1. A JPA entity A with a reference to a different JPA entity B. FetchType is FetchType.LAZY, e.g.

@Entity
public class A {
  @ManyToOne(fetch = FetchType.LAZY)
  private B refToB;
}

@Entity
public class B {
}


2. A remote interface with methods passing an instance of A, .e.g.


@Remote
public interface ITest {
    A test1();

    void test2(A a);
}


3. A process calling test1() and then test2() on the remote interface like this:

  @EJB(lookup = "...")
  private ITest iTest;

  public void ITest() {
        final A a = iTest.test1();

        iTest.test2(a);  }
  }


Error description: When calling test1() an instance of A is returned. This instance is valid and works as expected. The reference to B is a proxy (something like B_$$_javassist_2), which was expected because B was loaded lazily and was never accessed in the remote process before. When passing the instance of A back by calling test2(a) an exception of this type is raised:


java.lang.ClassNotFoundException: B_$$_javassist_2 from [Module "deployment.x.ear.y_ejb.jar:main" from Service Module Loader]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(Concurrent
ClassLoader.java:468)


It looks as if the proxy cannot be serialized or deserialized. The behavior is reproducible with different applications on different platforms. As soon as a proxy is passed as an argument in the remote call the exception is raised.
The classloader settings are the standard JBoss settings.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list