jboss / server / web / tmp / vfs-nested.tmp目录中的大量JAR文件

时间:2010-06-24 17:14:16

标签: jboss jboss5.x

有时我们在 jboss / server / web / tmp / vfs-nested.tmp 目录中有大量的JAR文件。
例如,今天这个目录包含超过350k的jar文件 但在其他主机上,此目录中只有2个jar文件 这个问题的根本原因是什么?

我们使用JBoss 5.1

更新
我在JBoss 5.1.0.GA的发行说明中找到了以下信息:

  

JBoss VFS提供了一组不同的功能   切换到控制它的内部   行为。 JBoss AS设置   jboss.vfs.forceCopy =默认为true。   查看所有提供的VFS标志   看看代码   VFSUtils.java类。

所以我不明白我应该设置什么? 我应该设置 -Djboss.vfs.forceNoCopy = true 还是 -Djboss.vfs.forceCopy = false
或者我应该同时设置它们吗?

更新1:
我已经阅读了整个帖子http://community.jboss.org/thread/2148?start=0&tstart=0 现在我不应该改变jboss.vfs.forceCopy或jboss.vfs.forceNoCopy。 根据这个线程,我将出现OutOfMemory错误而不是tmp目录中的大量文件。

6 个答案:

答案 0 :(得分:3)

从这里开始:http://sourceforge.net/project/shownotes.php?release_id=575410

“tmp目录中的nestedjarNNN.tmp文件过多.VFS通过将嵌套的jar解压缩到java tmp目录中的tmp文件来解包嵌套的jar。这可能会导致大量文件填满tmp目录。您可以通过在用于启动jboss的命令行上设置-Djboss.vfs.forceNoCopy = true来禁用此行为。默认情况下,将在以后的版本JBAS-4389中启用此功能。“

答案 1 :(得分:1)

jskaggz有一个很好的答案。另外,我在run.bat文件的开头有这个:

rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\tmp
rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\work
rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\log
mkdir       c:\apps\jboss-5.1.0.ga\server\default\tmp
mkdir       c:\apps\jboss-5.1.0.ga\server\default\work
mkdir       c:\apps\jboss-5.1.0.ga\server\default\log
echo --- Cleared temp folders ---

我遇到了旧版课程的问题,所以这似乎有所帮助。

答案 2 :(得分:1)

我在生产中遇到了上述相同的问题,并使用以下解决方案解决了这个问题。

添加了java选项

    -Djboss.vfs.cache=org.jboss.virtual.plugins.cache.IterableTimedVFSCache
    -Djboss.vfs.cache.TimedPolicyCaching.lifetime=1440

我的设置还定义了其他部署目录,因此我需要将这些附加目录添加到$JBOSS_SERVER_HOME/conf/bootstrap/中的vfs.xml文件中,以便了解其优势。

我认为生命周期设置以分钟为单位,因此我将其设置为一天,因为我有一整夜的服务器计划重启。

在找到此解决方案之前,我还尝试使用-Djboss.vfs.forceNoCopy=true-Djboss.vfs.forceCopy=false

这似乎有效,但我注意到应用程序运行速度慢了很多 - 大概是因为这些设置会关闭vfs缓存。

我的Jboss版本是jboss-5.1.0.GA 我的应用程序在生产中的集群中运行。

答案 3 :(得分:1)

我们通过爆炸部署(适用于战争和耳朵)解决了这个问题,如jboss文档中所述http://docs.jboss.org/jbossas/docs/Administration_And_Configuration_Guide/5/html/ch03s01.html

这是不使用vfs的方式。

答案 4 :(得分:0)

发现很多其他人在群集(或服务器场)环境中运行时遇到同样的问题。 https://issues.jboss.org/browse/JBAS-7126旨在解决将farm目录作为部署目录的问题。

使用第二个部署目录时遇到了同样的问题。 来自第二个部署目录的应用程序中的jar文件被复制,直到磁盘已满。

尝试添加第二个部署目录的方式与针对场目录所描述的https://issues.jboss.org/browse/JBAS-7126相同。

效果很好!

答案 5 :(得分:0)

我们遇到了同样的问题,并且能够通过将farm目录用作部署目录来解决问题。

在完成该流程之后,由于我们的DEV环境(我们有集群环境,我们有许多开发人员在共享DEV环境上部署)在我们部署时无法获得一致的结果,因此我们面临另一个问题这样的EAR和WAR。我们通过确保正在部署的EAR和JAR在服务器上接触(http://en.wikipedia.org/wiki/Touch_(Unix))来确保避免不一致来规避问题。