这个问题有点复杂,我有点头脑发热。我会尽量简短地描述这件事。
我有一个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类加载器来说是可见的。
我尝试了几种解决办法,并指出了缩小这个问题的范围:
ClassNotFoundExceptions在从WAR (而不是EJB )调用EMF实现时,是否有任何已知的或一般的用例?
这是一个EMF问题,还是一个更普遍的问题,当有一个战争调用EJB?
我还应该尝试哪些其他调试步骤来隔离和识别导致此问题的根本原因?
发布于 2011-11-21 22:54:29
这个问题的解决方案是在EMF论坛上找到的:758092
如果我将org.eclipse.emf.ecore.EPackage.Registry.INSTANCE系统属性设置为org.eclipse.emf.ecore.impl.EPackageRegistryImpl,魔术就会发生,而且会正常工作。
我很好奇为什么会起作用,但这是另一个问题。
https://stackoverflow.com/questions/8170701
复制相似问题