在 JBoss-as-7.0.x 独立部署中加载第 3 方 JAR 的最佳实践是什么?
我努力了:
- 将每个 JAR 部署为具有自己的 module.xml 描述符的独立模块;
- 将 JAR 部署到 WAR 的 WEB-INF/lib 目录中;
- 以及在多个 WAR 之间共享的任何 JAR 的 foo.ear/lib 目录。
上述方法 1 的明显优点是部署时比方法 2 和方法 3 减少了内存占用。然而,维护起来似乎相当困难,因为 JAR 所具有的每个依赖项都需要在 module.xml 中显式定义。对于大量的第三方库来说,这似乎不太容易维护。
对于部署私有的较小依赖项,请将它们保留在WEB-INF/lib
在你的.war
,这就是它的用途。如果您使用 Maven,那么对于 范围内的任何内容都应该是自动且透明的。
对于大型、复杂的依赖项或将在多个应用程序之间共享的依赖项,请使用选项 (4):
将每个逻辑库(例如“OpenJPA”或“Log4J”)部署为模块,包括其 api 和 impl jar 以及其他 AS7 模块尚未提供的任何依赖项 JAR。如果已经有一个模块,请添加对其的依赖项,而不是将 JAR 添加到您的模块中。如果几个不同的库共享一些共同的依赖项,请将它们拆分为模块并将它们添加为模块依赖项module.xml
.
Use jboss-部署-结构.xml https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7进行部署.war
/ .ear
/ 无论是否声明对模块的依赖(如果未自动检测和自动加载)。
我发现这是一种中度到低度麻烦的方法,效果很好。这比把所有东西都扔进去更麻烦WEB-INF/lib
在部署内部,这是 Java EE 标准要做的事情。它可以加快重新部署速度,并通过减少类/版本冲突来节省大量部署/测试时间。
如果您愿意做一些工作,您可以使用 Maven 和 maven-dependency-plugin 来生成已包含传递依赖项的模块。您可以在我为 AS 7 中的 EclipseLink 集成编写的模块 https://github.com/ringerc/as7-eclipselink-integration。只要有可能,我都会自动创建 AS7 模块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)