2010-12-08 38 views
2

我可以删除除lib文件夹以外的所有东西(JBoss说应用程序未部署,但他不会释放jar)。如何在不停止服务器的情况下移除JBoss中爆炸的战争?

我绑定了jboss-maven-plugin和hard-undeploy,但是它说这个文件(doc表示它也支持dirs)被取消部署,但是它没有取消部署应用程序。

我使用jboss-4.2.1.GA。我敢打赌,它可以通过jmx控制台解除部署,但我无法找出如何。

+0

Hotdeployment (取消部署)不应该用于生产环境。 – 2010-12-08 10:22:36

+0

我不同意,我认为它更高效,不重新部署webapp :)我认为你的意思是生产环境。 – IAdapter 2010-12-08 20:28:35

回答

1

的方式煤层执行取消部署展开的应用是

<target name="unexplode" description="Undeploy the exploded archive"> 
     <delete failonerror="no"> 
      <fileset dir="${ear.deploy.dir}"> 
       <exclude name="**/*.jar"/> 
      </fileset> 
     </delete> 
     <delete file="${deploy.dir}/${project.name}-ds.xml" failonerror="no"/> 
     <delete dir="${ear.deploy.dir}" failonerror="no"/> 
</target> 

这通常工作好,有时我需要重新启动(通过触摸这是由部署observerd文件)

<target name="restart-exploded"> 
    <antcall target="explode"/> 
    <touch file="${ear.deploy.dir}/META-INF/application.xml"/> 
</target> 
0

在jboss安装下的工作和tmp文件夹下手动删除应用程序。之前停止JBoss并在之后启动它。这将有所帮助。

0

我觉得是什么情况是:

  1. WAR文件部署和爆炸。
  2. 当您的应用程序启动时,其类加载器会打开JAR文件并将其锁定,以防止其被删除或覆盖。
  3. 然后停止并取消部署应用程序。
  4. 不幸的是,类加载器仍然存在,它仍然存在的锁可以防止删除JAR文件。

的类加载器可能仍然存在,原因有二:

  • 这可能是无法访问的,但GC没有运行。
  • 它可能已被泄漏,所以即使GC运行也不会被删除。

唯一可靠的解决方案是关闭并重新启动JBoss。