2010-12-08 2 views
2

私はlibフォルダ以外のすべてを削除できます(JBossはアプリケーションがアンデプロイされていると言いますが、彼はJARを解放しません)。サーバを停止せずにJBossで爆発した戦争を取り除くには?

私はjboss-maven-pluginとhard-undeployを結んでいましたが、ファイル(docもサポートしています)は展開されていませんが、アプリケーションは展開されません。

jboss-4.2.1.GAを使用しています。私はそれがjmx-consoleを通じてアンデプロイできると思っていますが、どうやって見つけられなかったのでしょうか。

+0

Hotdeployment(デプロイヤでobserverdされたファイルをタッチして)再起動する必要があり、良い作品であるアンデプロイを実行方法(配備解除)は、生産的な環境では使用しないでください。 –

+0

私は同意しません、私は、より生産的なwebappを再展開しないと思う:)私はあなたが生産環境を意味すると思います。 – IAdapter

答えて

1

Seamが展開されたアプリケーションが

<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> 

これは通常、時々私は

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

jbossインストールの下でworkおよびtmpフォルダからアプリケーションを手動で削除します。前にJBossを停止してから起動してください。これは役に立ちます。私が起こっているものと思わ

+0

LibはClassloaderから完全にアンロードされません。 JVMはファイルハンドルを保持しており、特にWindowsはファイルを削除できません。 –

+0

私はサーバーを停止した後に、私は爆発したディレクトリを削除する必要がありますが、Idはサーバーを停止することなくアンデプロイできるようにします。 – IAdapter

0

は次のとおりです。

  1. WARファイルをデプロイして爆発しています。
  2. アプリケーションが起動すると、そのクラスローダーがJARファイルを開き、ロックしてそれらが削除または上書きされないようにします。
  3. その後、アプリケーションを停止およびアンデプロイします。
  4. 残念なことに、クラスローダーはまだ存在し、それでもロックが保持されているため、JARファイルが削除されません。

クラスローダはまだ二つの理由のために存在することができます:

  • それは到達できないかもしれないが、GCが実行されていません。
  • リークされている可能性があるため、GCが実行されても削除されません。

唯一の解決策は、JBossをシャットダウンして再起動することです。

関連する問題