首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EMF实现在从EJB调用时工作,但在从WAR调用EJB时不起作用。

EMF实现在从EJB调用时工作,但在从WAR调用EJB时不起作用。
EN

Stack Overflow用户
提问于 2011-11-17 16:28:55
回答 1查看 297关注 0票数 0

这个问题有点复杂,我有点头脑发热。我会尽量简短地描述这件事。

我有一个J2EE应用程序,它运行在Glassfish v2上,并使用EMF (MDHT)的实现来消费MDHT消息。当从调用EJB的webservice调用它时,它工作得非常完美,并且已经工作了一年多。最近,我们有理由从WAR中调用它,测试用例是用户上传通常通过we服务发送的相同文件。当我们从战争中调用它时,它不起作用,EMF EPackage.Registry是空的!

当我们从WAR调用它时,WAR得到EJB会话bean的一个实例,并且只调用EJB。我们希望在EJB中保留尽可能多的逻辑,以避免重复代码。

基于MDHT用户列表的探讨,我认为这更像是EMF问题,而不是MDHT问题,它与使用中的类加载程序有关。

MDHT和EMF库打包在EJB中,对EJB类加载器来说是可见的。

我尝试了几种解决办法,并指出了缩小这个问题的范围:

  • 移动JAR,以查看类加载程序是否无法看到MDHT库。
  • 在调试器中签入以查看注册表填充时哪些类加载程序正在运行
  • 深入到EMF中并监视ClassNotFoundExceptions
  • 在其中放置一个日志断点,以查看在填充注册表时使用哪个类加载器。它似乎像预期的那样使用EJB类加载器。

在从WAR (而不是EJB )调用EMF实现时,是否有任何已知的或一般的用例?

这是一个EMF问题,还是一个更普遍的问题,当有一个战争调用EJB?

我还应该尝试哪些其他调试步骤来隔离和识别导致此问题的根本原因?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-21 22:54:29

这个问题的解决方案是在EMF论坛上找到的:758092

如果我将org.eclipse.emf.ecore.EPackage.Registry.INSTANCE系统属性设置为org.eclipse.emf.ecore.impl.EPackageRegistryImpl,魔术就会发生,而且会正常工作。

我很好奇为什么会起作用,但这是另一个问题。

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

https://stackoverflow.com/questions/8170701

复制
相关文章

相似问题

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