2010-12-08 2 views
2

Я могу удалить все, кроме папки lib (JBoss говорит, что приложение не развернуто, но он не выпустит банки).Как удалить взорванную войну в JBoss без остановки сервера?

Я связал jboss-maven-plugin и hard-undeploy, однако он говорит, что файл (doc говорит, что он также поддерживает dirs) нераспределен, однако он не откладывает приложение.

Im использование jboss-4.2.1.GA. Бьюсь об заклад, он может быть развёрнут через jmx-консоль, но я не смог узнать, как это сделать.

+0

Hotdeployment (undeployment) не следует использовать в продуктивных средах. – 2010-12-08 10:22:36

+0

Я не согласен, я думаю, что он более продуктивен, чтобы не повторно развертывать webapp :) Я думаю, вы имеете в виду производственные среды. – IAdapter 2010-12-08 20:28:35

ответ

1

Путь Шов выполняет операцию Undeploy разнесенного приложение

<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 по Deployer)

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

Удалите приложение вручную из папки с работами и tmp под вашей установкой jboss. Остановите JBoss до этого и запустите его после. Это поможет.

0

Я думаю, что это случается:

  1. файл WAR развернут и взорвался.
  2. Когда приложение запускается, его загрузчик классов открывает файлы JAR и блокирует их, чтобы предотвратить их удаление или перезапись.
  3. Затем вы останавливаете и разворачиваете приложение.
  4. К сожалению, загрузчик классов по-прежнему существует, и блокировки, которые он все еще удерживает, не позволяют удалить файлы JAR.

загрузчиком классов все еще может существовать по двум причинам:

  • Это может быть недостижимым, но GC не работать.
  • Возможно, он просочился, поэтому он не будет удален, даже если GC работает.

Единственное верное решение - выключить и перезапустить JBoss.

Смежные вопросы