0

我们不能在独立的 ejb 模块中引用任何外部 3rd 方 jar(除了复制我们的 appserver/lib 中的 jar 文件)吗?这似乎很不合逻辑不是吗?我不想创建企业应用程序。如果我必须使用任何 jar 文件,为什么我要被迫创建企业应用程序?

没有替代品吗?

4

2 回答 2

3

好吧,我想我在之前的回答中给了你一个很好的解释:

EJB 没有等效的 WEB-INF/lib,虽然在 EJB-JAR 中打包库可能适用于某些应用程序服务器,但这不是JAR 规范1的一部分,也不符合 Sun 关于J2EE 打包的标准。

我不知道要补充什么,如果你想写可移植的应用程序,你必须遵守规则。它们是否是由于技术限制(见脚注),这不是问题,规则就是规则。

另一种方法是在 EJB-JAR 中解压缩库,这非常难看(在应用程序服务器类路径中复制库是 IMO 不是可移植应用程序的替代方案)。

话虽如此,如果您使用的是 Java EE 6,您现在可以使用 WAR 而不是 EAR

1该线程所述,jar 规范不支持 jar 文件中的 jar 文件(从技术上讲,Java 的 URL 支持只深入一层:例如 jar:url/to/file!path/ in/jar 是允许的,但 jar:jar :url/to/file!path/in/jar!path/in/jar 不是)所以虽然你可以在你的 ejb jar 中复制 jar 文件,但不会从中加载任何内容。

于 2010-05-30T05:18:11.247 回答
0

您已经选择了答案,但我会提到“已安装的可选包”可能会提供解决方案,具体取决于您的服务器中可用的功能。

于 2010-05-31T05:34:15.097 回答