我是否可以在独立 ejb 模块中引用任何外部第 3 方 jar?
我们是否可以永远在独立的 ejb 模块中引用任何外部第 3 方 jar(除了在我们的 appserver/lib 中复制 jar 文件)?这看起来很不合逻辑不是吗?我不想创建企业应用程序。如果我必须使用任何 jar 文件,为什么我被迫创建企业应用程序?
没有其他选择吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,我想我在我的 之前的回答:
我不知道要添加什么,如果你想编写可移植的应用程序,你必须遵守规则。是否由于技术限制(见脚注),这不是问题,规则就是规则。
另一种方法是将库解压到 EJB-JAR 中,这非常难看(在我看来,将库复制到应用程序服务器类路径中并不是可移植应用程序的替代方案)。
话虽这么说,如果您使用的是 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 不是),因此虽然您可以将 jar 文件复制到 ejb jar 中,但不会从中加载任何内容。
Well, I think I gave you a pretty good explanation in my previous answer:
I don't know what to add, if you want to write portable applications, you have to follow the rules. Whether they are due to technical limitations (see footnote), that's not the question, rules are rules.
The alternative would be to unpack the library in your EJB-JAR and that's incredibly ugly (copying your library in the application server classpath is IMO not an alternative for portable applications).
That being said, if you are using Java EE 6, you can now use a WAR instead of an EAR.
1 As explained in this thread, the jar spec does not support jar files within jar files (technically Java's URL support only goes one level deep: eg jar:url/to/file!path/ in/jar is allowed, but jar:jar:url/to/file!path/in/jar!path/in/jar is not) so while you could copy the jar files inside your ejb jar, nothing will be loaded from it.
您已经选择了答案,但我会提到“安装的可选软件包”可能会提供解决方案,具体取决于您的服务器中可用的功能。
You've already selected an answer, but I'll mention that "installed optional packages" might offer a solution, depending on the features available in your server.