0

我正在为我正在学习的课程构建一个项目,它由 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 数据库。它通过运行一个摄取器来执行此操作,该摄取器在进程中读取驻留在 maven 存储库中的 xml 文件,使用各种 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 文件中声明该存储库?

4

1 回答 1

0

在输入问题时,我想我知道问题可能是什么。xml 文件所在的存储库在项目的根 pom(impl 父级)中声明,而不是在 impl 模块的 pom 中声明。由于 impl 是与 EAR 一起打包的模块,因此我可能还需要在 impl pom 文件中声明存储库。

于 2013-11-08T14:40:08.643 回答