【发布时间】:2013-11-08 14:34:40
【问题描述】:
我正在为我正在学习的课程构建一个项目,它由 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 文件中声明该存储库?
【问题讨论】:
-
'一个驻留在 Maven 存储库中的 xml 文件,'您的代码看起来不像是从 Maven 存储库中读取的。
-
xml 文件不在我的本地机器上,它是从类路径中读取的。输入流作为参数传入我的摄取器。
标签: java maven jakarta-ee jboss