문제

I am migrating a ten years-old EJB2 application running on JBoss 6.1 from JNP protocol to CORBA RMI/IIOP because I want to use ORB PortableInterceptor.

First JBoss complains with org.jboss.iiop.rmi.RMIIIOPViolationException I have now fixed.

Now JBoss' WebCL servlet fails to deliver Stub for my Home and Remote interfaces to the client and I have no idea what may be wrong. My only remaining hypothesis is that the RMIC compiler fails silently. The only ERROR message I get is

2013-01-29 09:33:52,068 ERROR [org.jboss.iiop.WebCL] (pool-2-thread-1) failed finding class my.test.services.orb._Business1SLHome_Stub: org.jboss.util.NestedRuntimeException: - nested throwable: (java.lang.ExceptionInInitializerError)
    at org.jboss.iiop.WebCL.findClass(WebCL.java:124) [:6.1.0.Final]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) [:1.6.0_31]
    at org.jboss.classloading.spi.DelegatingClassLoader.loadClass(DelegatingClassLoader.java:82) [jboss-classloading-spi.jar:6.0.0.CR1]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) [:1.6.0_31]
    at org.jboss.web.WebServer.run(WebServer.java:393) [:6.1.0.Final]
    at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33) [:2.0.0.CR7]
    at org.jboss.threads.CleanupExecutor.execute(CleanupExecutor.java:38) [:2.0.0.CR7]
    at org.jboss.threads.CleanupExecutor.execute(CleanupExecutor.java:38) [:2.0.0.CR7]
    at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:801) [:2.0.0.CR7]
    at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45) [:2.0.0.CR7]
    at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:821) [:2.0.0.CR7]
    at java.lang.Thread.run(Thread.java:662) [:1.6.0_31]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122) [:2.0.0.CR7]
Caused by: java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [:1.6.0_31]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [:1.6.0_31]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [:1.6.0_31]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [:1.6.0_31]
    at java.lang.Class.newInstance0(Class.java:355) [:1.6.0_31]
    at java.lang.Class.newInstance(Class.java:308) [:1.6.0_31]
    at org.jboss.iiop.WebCL.findClass(WebCL.java:120) [:6.1.0.Final]
    ... 12 more
Caused by: java.lang.RuntimeException: Error loading class my.test.services.orb.Business1Remote: java.lang.ClassNotFoundException: my.test.services.orb.Business1Remote from BaseClassLoader@3cdf0256{asynch-classloader:0.0.0$MODULE}
    at org.jboss.iiop.rmi.marshal.CDRStream.readerFor(CDRStream.java:208) [:6.1.0.Final]
    at org.jboss.iiop.rmi.marshal.strategy.StubStrategy.<init>(StubStrategy.java:175) [:6.1.0.Final]
    at org.jboss.iiop.rmi.marshal.strategy.StubStrategy.forMethod(StubStrategy.java:115) [:6.1.0.Final]
    at my.test.services.orb._Business1SLHome_Stub.$i2(Unknown Source)
    at my.test.services.orb._Business1SLHome_Stub.<clinit>(Unknown Source)
    ... 19 more

How should I proceed to get the cause of this class loading failure and fix it ?

도움이 되었습니까?

해결책

I've been doing this:

  1. Enable remote debugging on jboss
  2. Connect a debugger (such as eclipse debugger) to JBoss instance
  3. Define a breakpoint to catch any ClassNotFoundExceptions
  4. Activate the code
  5. When the breakpoint is hit, examine the used classloader and see what the list of loaded classes look like, which should give clues as to why class loading is failing

Even if the compiler works, it might be that classloader has not the visibility to class(es) in question.

다른 팁

The root cause is that the named Business1Remote class wasn't found. See the stack trace. Did you deploy it to the client?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top