java - JBoss vuelve a desplegar los cambios en el directorio de despliegue explotado
jboss-4.2.x (1)
Aunque la aplicación realmente se vuelve a implementar, el directorio de trabajo no se elimina realmente de manera predeterminada (es donde JBoss guarda las jsp compiladas), por lo que después de una redistribución puede mantener las clases compiladas de jsp anteriores.
En JBoss 5.1 (no estoy 100% seguro si está disponible en JBoss 4.x) hay una opción para forzar a JBoss a eliminar el directorio de trabajo de una aplicación cuando se la desinstala, se vuelve a implementar. Puede encontrar esta opción en: $ JBOSS_HOME / server / yourInstance / deployers / jbossweb.deployer / META-INF / war-deployers-jboss-beans.xml, en este archivo busque la propiedad:
<property name="deleteWorkDirOnContextDestroy">true</property>
De manera predeterminada, está configurado en falso, por lo que debe establecerse como verdadero. Tal vez pueda ayudar a resolver su problema al volver a implementar, aunque el éxito de la implementación en caliente puede depender de dependencias de otras clases, etc. Por otro lado, cuando se despliega o vuelve a implementar una aplicación, use el comando mover (mv), pero nunca la copia (cp) uno, ya que el mv es atómico pero no el cp (con cp, el escáner de implementación en caliente podría activarse mientras el archivo todavía se está copiando).
Otra solución para la redistribución en caliente es eliminarla manualmente, (recomendada solo para entornos de desarrollo) usamos la siguiente cadena de comandos (teniendo en cuenta que ya está en el directorio de implementación):
rm yourapp.war; rm -rf ../work/jboss.web/localhost/yourapp;mv <newappversiondir>/yourapp.war .
Pero tenga en cuenta que se desaconseja encarecidamente la implementación en entornos de producción y entornos críticos.
La búsqueda de una forma de implementar nuevos cambios sin reiniciar el JBoss me llevó a esto:
https://community.jboss.org/wiki/RedeployAnApplicationWhenChangeAFileInAnExplodedDeploymentDirectory
Y al principio, pensé que acababa de encontrar el Santo Grial, tocar el descriptor de nivel superior en un directorio descompuesto redistribuiría los nuevos cambios, pero luego comenzó el extraño comportamiento y los errores.
Resulta que los servlets y las clases de Java no se redistribuyen, después de leer muchas respuestas negativas, abandoné esto, pero al menos quiero saber qué se vuelve a implementar después de tocar el descriptor de nivel superior.
Si necesitan saberlo, estoy implementando un proyecto Java EE como una guerra en JBoss 4x.