在JBoss-as-7.0.x独立部署中加载第三方JAR的最佳做法是什么?
我试过了:
上述方法1的明显优势是,在部署时间内,通过apprach 2和方法3减少了内存占用。但是,由于JAR需要在JAR中明确定义的每个依赖关系,因此维护起来似乎非常艰巨。 module.xml,对于大量第三方库来说似乎不易维护。
答案 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模块。