1

当我启动 JBoss 6 时,我看到它从 tmp/vfs/automountXXX 文件夹中的 WEB-INF/lib 中解压所有 jar 文件。例如 jackrabbit-server.war 包含库 asm-3.1.jar,然后在 tmp 文件夹中,我看到以下包含文件的文件夹:

asm-3.1.jar-83dc35ead0d41d41/asm-3.1.jar
asm-3.1.jar-2a48f1c13ec7f25d/contents/"unpacked asm-3.1.jar"

它不会只从 my.ear/lib 获取文件 WEB-INF/lib... 为什么会这样?这里有什么方法可以防止它这样做吗?它只会减慢应用程序服务器的启动(和停止)速度,这在开发中不是那么舒服……顺便说一句。以这种方式重新打包战争结构,给了我相同的工作应用程序并在应用程序服务器启动时节省了 1 分钟...... 1 分钟就足够了......我希望有更简单的方法,而无需在开发模式下重新打包。

如果它与 JavaEE 6 规范和 ejb-jars 有某种关系,它们现在可以位于 WEB-INF/lib 中,所以我的 war 文件中没有这样的库......

更新:实际上,当我将 jackrabbit-server.war 重新打包到包含 jackrabbit-server.war 的 jackrabbit-server.ear 并将其所有库移动到 jackrabbit-server.ear/lib 时,我仍然在 tmp 中看到两个文件夹:

asm-3.1.jar-215a36131ebb088e/asm-3.1.jar
asm-3.1.jar-14695f157664f00/contents/

但在这种情况下,最后一个文件夹是空的。所以它仍然会创建两个文件夹,但不会解压缩我的库。我也使用了爆炸部署,所以问题只是关于 jar 文件,而不是解包 ear/war。

4

2 回答 2

1

它也将拆包 EAR,只是不在同一个地方。你将不得不四处寻找他们被拆包的地方,但他们就在那里。

出于性能原因这样做。如果没有,那么类加载将非常缓慢,因为它必须通过嵌套的 ZIP 文件递归查找它需要的内容。

所以你可能会觉得拆包会减慢你的速度,但实际上它让事情变得更快。

于 2011-01-05T08:45:19.313 回答
0

根据JBoss AS 论坛上的讨论,这可能是一个错误。现在没有解决方法来修复/避免/配置它。

我得到的唯一想法是重新打包我的应用程序:在 EAR 中,我将库从 WAR 的 WEB-INF\lib 移动到 EAR\lib(WAR 中只剩下 struts,否则它将无法工作),以及我制作的另一个 WAR 应用程序作为 EAR 及其所有库,我可以移至 EAR\lib。在开发模式下我可以轻松使用这种结构,它为我节省了启动应用程序服务器 2 分钟以上的时间,而且很多......现在 JBoss 需要 1:50 分钟才能启动,而之前需要 4 分钟......

于 2011-01-08T18:25:44.637 回答