首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何诊断JBoss IIOP存根生成,类加载问题?

如何诊断JBoss IIOP存根生成,类加载问题?
EN

Stack Overflow用户
提问于 2013-01-29 20:44:21
回答 2查看 359关注 0票数 1

我正在将一个运行在JNP 6.1上的10年前的EJB2应用程序从JNP协议迁移到JBoss RMI/IIOP,因为我想使用ORB PortableInterceptor。

首先,JBoss抱怨org.jboss.iiop.rmi.RMIIIOPViolationException,我现在已经修复了。

现在,JBoss的WebCL servlet无法将my Home和Remote接口的存根传递到客户端,我不知道出了什么问题。我剩下的唯一假设是RMIC编译器会以静默方式失败。我得到的唯一错误消息是

代码语言:javascript
复制
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

我应该如何继续找出这个类加载失败的原因并修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-29 21:11:42

我一直在这么做:

  1. 在JBoss上启用远程调试
  2. 连接调试器(如eclipse debugger)来捕获断点,以便在命中断点时捕获任何代码,检查使用的类加载器并查看已加载类的列表,这将为类加载失败的原因提供线索

即使编译器可以工作,也可能是类加载器没有对相关类的可见性。

票数 2
EN

Stack Overflow用户

发布于 2013-01-29 21:46:58

根本原因是找不到命名的Business1Remote类。请参见堆栈跟踪。你把它部署到客户端了吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14583213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档