【发布时间】:2012-03-08 18:20:07
【问题描述】:
我正在使用 JBoss 4.2.3、EJB2、XDoclet 并部署了一个带有 EJB 的 EAR,以及其他带有各种网站的 EAR。
尝试从其中一个网站访问 EJB 时,我收到 NoClassDefFoundError。
看来查找成功了。例如,我可以看到getContext().lookup(SecurityServiceRemoteHome.JNDI_NAME) 返回了“$Proxy266”类的东西。我在 JBoss 的 JNDI 中也看到了这个绑定:
remote (proxy: $Proxy266 implements interface com.icumed.ifactory.service.session.SecurityServiceRemoteHome,interface javax.ejb.Handle)
仅供参考,SecurityServiceRemoteHome.JNDI_NAME = "ejb/ifactory/SecurityService/remote"
在查找之后,我调用它,这是引发错误的地方:
home = (SecurityServiceRemoteHome)PortableRemoteObject.narrow(obj,
SecurityServiceRemoteHome.class);
我听说这可能是不必要的,我可以在这里直接进行类型转换,但我认为这不是问题所在。从到目前为止我在网上阅读的内容来看,似乎 SecurityServiceRemoteHome 可能无法完全加载。也许缺少一些辅助课程?不过,我没有看到任何表明这一点的错误。调试此问题的最佳方法是什么?
【问题讨论】:
-
好的,那不是问题。我添加了一些调试,并且能够记录超类、接口、方法返回类型和方法参数的每个类定义。那么,怎么会找不到第一类def,SecurityServiceRemoteHome呢?
-
啊,这里有一些可以帮助你的东西。异常的扩展消息是:java.lang.ClassNotFoundException: No ClassLoaders found for: ...SecurityServiceRemoteHome
-
而且 SecurityServiceRemoteHome 和它所依赖的每个类似乎都有相同的类加载器:org.jboss.mx.loading.UnifiedClassLoader3
-
我的解决方案或许能帮到你[这里][1] [1]:stackoverflow.com/questions/3461866/…