EAR和EJB类加载器错误

时间:2014-03-20 09:03:26

标签: java classloader ejb-3.0 sap netweaver

我正在开发使用库Overthere 2.3.1的客户端。本地机器客户端工作完美。但是当我尝试调用包含在EJB 3.0中的相同代码时,我有一个例外,即没有加载所有必需的类。

我查看了源代码,发现该类包含具有硬编码类名的协议注释扫描程序(https://github.com/hierynomus/scannit):

Scannit scannit = new Scannit(Configuration.config()
     .scan("com.xebialabs")
     .with(new AbstractScanner[] { new TypeAnnotationScanner() }));

命令

Thread.currentThread().getContextClassLoader().getResources("com/xebialabs") 

返回null。

看起来EJB在一个单独的类加载器中运行,该类加载器无法访问所有jar。

EJB通过以下结构打包到EAR:

EAR    
--META-INF    
----sda-dd.xml
----SAP_MANIFEST.MF
----MANIFEST.MF  
----application-j2ee-engine.xml    
--ejb.jar    
--extlibs.jars

MANIFEST.MF文件不包含CLASS-PATH中对外部库的任何引用。 EAR项目已成功部署到应用程序服务器。

EJB.jar还包含值为“Class-Path:”的META-INF / MANIFEST.MF。默认情况下。

我已经尝试过在清单文件中使用CLASS-PATH,但没有运气。

有没有人可以帮助我,如何构建项目,在EJB运行时加载所有外部库?我错过了什么资源和类加载器?

0 个答案:

没有答案