【发布时间】:2010-08-12 01:14:27
【问题描述】:
我的目标非常简单:使用 ant 构建一个包含 1 个 EJB 和 1 个包含所有依赖项的 jar 的 EAR。这个 jar,为了示例而称为 common.jar,其中包含供应商 jar 文件以及 EJB 依赖的其他 xml 文件,并且需要能够在运行时看到......
到目前为止,我已将所有内容正确打包为这样的 EAR:
EARFILE.ear
-EJBFILE.jar
/META-INF
-MANIFEST.MF
-common.jar
/META-INF
-MANIFEST.MF
/lib
-(all vendor jars inside here)
-(All the xml config files are inside the root of the common.jar)
EJBFILE.jar 的 MANIFEST.MF 内部是...
Class-path: ../../common.jar
common.jar 的 MANIFEST.MF 内部是...
Class-path: ../lib/some_common.jar
当我部署它时,当我尝试启动服务器时,appserver (websphere) 找不到 JAR 文件。我收到了ClassDefNotFoundError,因为当我尝试启动实例时,EJB 中的类找不到供应商 JAR 文件。但是我知道 common.jar 设置正确,否则 EJB 不会编译,因为它需要在 javac 的类路径中包含这些供应商 jar。
所以我想知道的是:
- 如何让运行时正确查看供应商 jar 文件。
- EJB 能否在运行时查看 xml 文件?我对此感到担忧,因为这些 xml 文件位于 EJB 之外的 EAR 中的 jar 内,它甚至不是一个模块,它只是 EAR 中的一个 jar。
- 在使用 websphere 时这是否重要?从我收集到的一些容器甚至不关心 MANIFEST.MF 的类路径中的内容。
【问题讨论】:
标签: java ant jar websphere packaging