【问题标题】:Exception in thread "Thread-102" java.lang.NoClassDefFoundError: javax.ejb.EJBHome线程“Thread-102”中的异常 java.lang.NoClassDefFoundError: javax.ejb.EJBHome
【发布时间】:2017-05-15 07:51:37
【问题描述】:
1   InitialContext initialContext = new InitialContext();
2   EJBHome ejbHome = (EJBHome) initialContext.lookup(jndiLocation);
3   Class  ejbHomeClass = ejbHome.getClass();
4   Method createMethod = ejbHomeClass.getMethod("create", new Class[] { });

当代码执行初始上下文查找并将其存储在 EJBHome 对象中时,从第 2 行引发异常。

我已经多次看到这个问题并尝试了几种解决方案,例如在类路径和清单中包含 j2ee.jar。但是,他们的解决方案可能不适用于此问题,因为它发生在线程上。

【问题讨论】:

  • 这是一个独立的 java 客户端、“远程服务器”客户端还是“同一服务器客户端”?
  • 同一个服务器客户端。
  • 您需要从部署中删除包含任何 Java EE API 或实现的每个 jar,尤其是 j2ee.jar。什么样的代码会产生线程? EJB 还是 servlet?
  • 这是一个 EJB。如果我去掉 j2ee.jar,代码将在哪里检索对 EJBHome 类的引用?
  • 服务器提供。它在哪个服务器(和版本)上运行?

标签: java multithreading ejb websphere websphere-8


【解决方案1】:

您不应该在 EJB 中使用用户定义的线程。

EJB 容器负责管理与系统相关的功能,例如安全性、线程、资源池等。为了控制组件操作的这些方面,容器对其管理的组件设置了一定的限制。

http://www.oracle.com/technetwork/java/restrictions-142267.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 2014-11-06
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多