这个问题有点复杂,我有点过头了。我将尝试尽可能简短地描述它。
我有一个在Glassfish v2上运行的J2EE应用程序,并使用EMF(MDHT)的实现来使用CCD消息。当从调用EJB的Web服务调用它时,它运行良好并且已经工作了一年多。最近我们有理由从WAR调用它,测试用例是用户上传通常通过webservice发送的同一文件。当我们从WAR调用它时,它不起作用,EMF EPackage.Registry
为空!
当我们从WAR调用它时,WAR获取EJB会话bean的实例并只调用EJB。我们希望在EJB中保留尽可能多的逻辑,以避免重复代码。
基于discussion on the MDHT User list我认为这更像是EMF问题,而不是MDHT问题,它与正在使用的类加载器有关。
MDHT和EMF库打包在EJB JAR中,并且对EJB类加载器可见。
我已经尝试了几种解决方法并指出缩小此问题:
ClassNotFoundExceptions
是否有任何已知或一般用例,当从WAR而不是EJB调用时,EMF实现的行为会有所不同?
这真的是一个EMF问题,还是在调用EJB时它是一个更普遍的问题?
我应该尝试哪些其他调试步骤来隔离并确定此问题的根本原因?
答案 0 :(得分:0)
在EMF论坛上找到了解决此问题的方法:http://www.eclipse.org/forums/index.php/m/758092/#msg_758092
如果我将org.eclipse.emf.ecore.EPackage.Registry.INSTANCE
系统属性设置为org.eclipse.emf.ecore.impl.EPackageRegistryImpl
魔法就会发生并且有效。
我很好奇为什么会这样,但这是一个不同的问题。