在JBoss AS7独立部署中加载第三方JAR的最佳实践?

时间:2011-11-27 23:03:22

标签: deployment jar module jboss7.x

在JBoss-as-7.0.x独立部署中加载第三方JAR的最佳做法是什么?

我试过了:

  1. 使用自己的module.xml desriptor将每个JAR部署为独立模块;
  2. 在WAR的WEB-INF / lib目录中部署JAR;
  3. 和跨多个WAR共享的任何JAR的foo.ear / lib目录。
  4. 上述方法1的明显优势是,在部署时间内,通过apprach 2和方法3减少了内存占用。但是,由于JAR需要在JAR中明确定义的每个依赖关系,因此维护起来似乎非常艰巨。 module.xml,对于大量第三方库来说似乎不易维护。

1 个答案:

答案 0 :(得分:16)

对于部署为私有的较小依赖项,请将WEB-INF/lib中的.war保留在module.xml中,这就是它的用途。如果您正在使用Maven,那么对于< compile />中的任何内容都应该是自动且透明的。范围。

对于将在多个应用程序之间共享的大型复杂依赖项或依赖项,请使用选项(4):

将每个逻辑库(如“OpenJPA”或“Log4J”)部署为模块,包括其api和impl jar以及其他AS7模块尚未提供的任何依赖JAR。如果已经有一个模块添加依赖它而不是向模块添加JAR。如果几个不同的库共享一些公共依赖项,请将它们拆分为模块,并将它们作为模块依赖项添加到.war中。

如果未自动检测并自动加载,请使用jboss-deployment-structure.xml让您的部署.ear / WEB-INF/lib /声明对模块的依赖。

我发现这是一种中等到低麻烦的方法,效果很好。将所有内容转储到部署中的{{1}}更麻烦,这是Java EE标准要做的事情。它加速了重新部署,并通过减少类/版本冲突节省了大量的部署/测试时间。

如果您愿意做一些工作,可以使用Maven和maven-dependency-plugin来生成已包含传递依赖关系的模块。你可以在module I wrote for EclipseLink integration in AS 7中看到一个例子。我尽可能自动创建AS7模块。