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

tra*_*ega 26 deployment module jar 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目录.

上面方法1的明显优势是在部署时比内容2和方法3减少了内存占用.然而,由于需要在module.xml中显式定义JAR的每个依赖项,因此维护起来似乎相当艰巨.对于大量的第三方库来说,这似乎无法维护.

Cra*_*ger 16

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

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

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

如果没有自动检测和自动加载,请使用jboss-deployment-structure.xml让您的部署.war/ .ear/无论如何都声明对模块的依赖.

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

如果您愿意做一些工作,可以使用Maven和maven-dependency-plugin来生成已包含传递依赖关系的模块.您可以在我为AS 7中的EclipseLink集成编写模块中看到一个示例.我尽可能自动创建AS7模块.