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

标签 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 中获取...为什么会这样?有什么方法可以阻止它这样做吗?它只会减慢应用程序服务器的启动(和停止)速度,这在开发中不太舒服......顺便说一句。以这种方式重新打包 war 结构,给了我相同的工作应用程序,并在应用程序服务器启动时节省了 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/

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

最佳答案

它也会解压 EAR,只是不在同一个地方。你必须四处寻找它们被拆开的地方,但它们就在那里。

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

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

关于java - JBoss 6 从 WEB-INF/lib of war 解压 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4601756/

相关文章:

eclipse - 在 Worklight Server 6.1.0.01 上安装 war 文件

java - Spring boot --> 在 war 部署期间动态添加 jars(而不是在 war 生成期间)

java - 链接到 JSF 中的 CSS 文件?

java - 无法在 Jboss-eap-6.4 中部署 Springboot 应用程序

java - 415 RESTful Web 服务中不支持的媒体类型

java - Eclipse 没有像我在其他地方看到的那样在我的 Maven 项目中显示 src/main/resources

java - Hadoop - 如何收集没有值的文本输出

允许 -/或 .作为日期内的分隔符

java - Tomcat8 部署时挂起

java - 0 :25:01, 819 警告 [HtmlImageRendererBase] 缺少 ALT 属性:j_id113