JBoss 6从WEB-INF / lib of war中解压缩jar

时间:2011-01-05 07:33:11

标签: java war jboss6.x

当我启动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文件中没有这样的库......

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

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

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

2 个答案:

答案 0 :(得分:1)

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

出于性能原因,这是。如果没有,那么类加载将非常缓慢,因为它必须通过嵌套的ZIP文件来寻找它所需要的东西。

因此,您可能会觉得拆包会减慢您的速度,但实际上会让事情变得更快。

答案 1 :(得分:0)

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

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