我正在为我正在学习的课程构建一个项目,它包含4个模块
-impl (business logic/dao access)
-ejb (encapsulates business logic and provides access to it via a remote interface)
-war (web tier)
-ear (contains the war and ejb modules)
我在impl中拥有的一个实用程序类可以填充H2数据库。它通过运行一个ingestor来读取进程中的xml文件驻留在maven存储库中,使用各种dao类/方法来提取数据:
String fileName = "xml/proj-data.xml";
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
当我通过单元测试运行摄取器时,运行正常,但是当我将所有内容分层时,我在xml / proj-data.xml上得到NoClassDefFoundException
所以我的基本概要是:
-the war has dependencies on the impl and ejb modules
-the ejb has dependency on the impl module
-the ear has dependency on the impl, ejb, and war
这是一个maven项目。当我将EAR部署到服务器时,会显示战争的起始页面(正如我所料)。
- html页面有一个按钮,当按下该按钮时,会向servlet发送一个帖子 - servlet有一个ejb注入它(通过它的远程接口)。 -ejb方法回调impl中的populate方法,那就是当异常发生时,我得到一个显示异常的网页。
我是否还需要在WAR pom文件中声明该存储库?
答案 0 :(得分:0)
在输入问题时,我想我知道问题可能是什么。 xml文件所在的存储库在项目的根pom(impl parent)中声明,而不是impl模块的pom。由于impl是与EAR打包在一起的模块,我可能还需要在impl pom文件中声明存储库。