deployment jboss java-ee

deployment - Implementación en caliente en JBoss: ¿cómo hago que JBoss "vea" el cambio?



jboss structure (15)

Deberías probar JRebel , que hace las cosas más divertidas para desplegar. Un poco caro, pero vale la pena el dinero. Ellos tienen una versión de prueba.

Estoy desarrollando una aplicación Java EE que despliego una y otra vez en una instalación local de JBoss durante el desarrollo. Quiero acelerar la compilación implementando mi aplicación directamente en [JBOSS] / server / default / deploy / myApp

Parece que funciona, pero también parece haber un retraso algo arbitrario entre el despliegue duro y cuando JBoss comienza a usar las nuevas clases. No estoy muy familiarizado con JBoss, pero supongo que almacena clases en caché, y que esto es lo que causa el problema.

¿Estoy en lo correcto, y si es así, cómo hago que JBoss limpie su caché?


Desafortunadamente, no es tan fácil. Hay cosas más complicadas entre bastidores en JBoss (la mayoría relacionadas con ClassLoader) que le impedirán implementar su aplicación en HOT-DESPLAY.

Por ejemplo, no podrá instalar HOT-DESPLIEGUE si cambian algunas de las firmas de sus clases.

Hasta ahora, usar MyEclipse IDE (una distribución paga de Eclipse) es lo único que encontré que hace la implementación en caliente con bastante éxito. Sin embargo, no es 100% exacto. Pero ciertamente mejor que JBoss Tools, Netbeans o cualquier otra solución basada en Eclipse.

He estado buscando herramientas gratuitas para lograr lo que acaba de describir asking personas en si desea echar un vistazo.


En realidad, mi problema era que la utilidad mvn de línea de comando no vería los cambios por algún motivo. Inicié la implementación automática en el Escáner de implementación y todavía no había diferencia. SIN EMBARGO ... Estaba jugueteando con el entorno Eclipse y, como había agregado un servidor JBoss para su ventana Servidores, descubrí que tenía la capacidad de "Agregar o quitar ..." módulos en mi espacio de trabajo. Una vez que se agregó el proyecto cada vez que realicé un cambio en el código, el Despliegue del Despliegue detectó el cambio de código y JBoss pasó por el ciclo de actualización del código. Funciona de maravilla.

Estos son los pasos necesarios para configurar esto;

Primero, si aún no lo hizo, agregue su servidor JBoss a su Eclipse usando Archivo-> Nuevo-> Otro-> Servidor y luego siga las instrucciones de agregar su servidor JBoss AS 7. Asegúrese de ubicar el directorio que está utilizando.

Una vez agregado, mira hacia abajo cerca de la parte inferior de Eclipse a la pestaña "Servidores". Debería ver su servidor JBoss. Resalta y busca "Agregar o quitar ...". Desde allí deberías ver tu proyecto.

Una vez agregado, haga un pequeño cambio en su código y vea a JBoss ir a la ciudad desplegándose para usted.


Encontré la solución en este link :

Qué hacer:

  1. configurar el artefacto de guerra explotado para tener extensión .war
  2. desplegar artefactos explosivos a WildFly o Jboss
  3. configurar IntelliJ para actualizar los recursos en la acción de actualización

Cuando modifico una página (web), actualizo y cuando actualizo el navegador web: todo está allí con mi mod. Configuré Jboss para el escaneo automático (no estoy seguro si ayudó)


Esto funcionó para mí en Eclipse Mars con WildFly 11. Haga doble clic en el servidor WildFly en Servidores para abrir la página de configuración. En la pestaña Descripción general -> Publicación, seleccione "Publicar automáticamente cuando cambien los recursos" y establezca el intervalo en 1. A continuación, pestaña Resumen -> Comportamiento de recarga de la aplicación, desmarque el patrón predeterminado de uso y establezca el patrón en /.jar$|/.class$ . En la pestaña Despliegue, desmarque Implementar proyecto como archivos comprimidos. Espero que esto ayude.


Estoy usando JBoss AS 7.1.1.Final . Agregar el siguiente fragmento de código en mi web.xml me ayudó a cambiar los archivos jsp sobre la marcha:

<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>development</param-name> <param-value>true</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>

Espero que esto ayude.!!


He estado desarrollando un proyecto con Eclipse y Wildfly y el archivo EAR descompuesto se estaba haciendo grande debido a la implementación de todas las bibliotecas de terceros que necesitaba en la aplicación. Estaba apuntando el despliegue a mi repositorio Maven, que supongo que estaba volviendo a copiar las jarras cada vez. Así que volver a desplegar la aplicación cada vez que cambiaba el código de Java en la capa de servicio se estaba convirtiendo en una pesadilla.

Luego de haber recurrido al agente de Hotswap esto ayudó mucho en cuanto a ver cambios en el código EJB sin volver a implementar la aplicación.

Sin embargo, recientemente me actualicé a Wildfly 10, Java 8 y JBoss Developer Studio 10 y durante ese proceso me tomé el tiempo de mover todos mis jarrones de aplicaciones de terceros, por ejemplo, primos en módulos Wildfly y eliminé mi repositorio Maven de mi configuración de implementación. Ahora, volver a implementar toda la aplicación, que es bastante grande a través de Eclipse, toma solo unos segundos y es mucho más rápido que antes. Ni siquiera siento la necesidad de instalar Hotswap y no quiero arriesgarme de todos modos ahora mismo.

Por lo tanto, si está compilando en Eclipse con Wildfly, mantenga su aplicación libre de libs de terceros utilizando módulos Wildfly y estará mucho mejor.


He tenido el mismo problema, pero creo que lo tengo bajo control ahora.

¿Estás usando eclipse o línea de comando o?

Cuando uso la línea de comando, creo que hice "seam clean" o "seam undeploy" o quizás incluso "seam restart" seguido de "seam explde". Probablemente intenté todo esto en un momento u otro sin molestarme en buscar lo que hace cada uno.

La idea es eliminar el archivo de guerra desplegado de DOS lugares

1. $JBOSS_HOME/server/default/deploy 2. $PROJECT_HOME/exploded_archives

Estoy bastante seguro de que "seam undeploy" quita el 1er y "seam clean" quita el 2do.

Cuando uso eclipse (uso el gratuito), primero apago "Project / Build Automatically". Cuando estoy listo para implementar, hago Project / Build Project o Project / Build All, dependiendo de lo que he cambiado. Cuando cambio xhtml, Build Project es suficiente. Cuando cambio la fuente Java Build All funciona. Es posible que estos hagan las mismas cosas y la diferencia esté en mi imaginación, pero una combinación de estas cosas funcionará para ti.

Sin embargo, debes mirar la salida. Ocasionalmente, la aplicación no se limpia o no se implementa. Esto resultaría en no ver su cambio. Algunas veces apago el servidor primero y luego reconstruyo / limpio / despliego el proyecto.

Espero que esto ayude.

TDR


Implemente la aplicación como explotada (carpeta project.war), agregue su web.xml:

<web-app> <context-param> <param-name>org.jboss.weld.development</param-name> <param-value>true</param-value> </context-param>

Actualice la hora web.xml cada vez que la implemente (añada una línea en blanco):

set PRJ_HOME=C:/Temp2/MyProject/src/main/webapp set PRJ_CLSS_HOME=%PRJ_HOME%/WEB-INF/classes/com/myProject set JBOSS_HOME= C:/Java/jboss-4.2.3.GA-jdk6/server/default/deploy/MyProject.war set JBOSS_CLSS_HOME= %JBOSS_HOME%/WEB-INF/classes/com/myProject copy %PRJ_CLSS_HOME%/frontend/actions/profile/ProfileAction.class %JBOSS_CLSS_HOME%/frontend/actions/profile/ProfileAction.class copy %PRJ_CLSS_HOME%/frontend/actions/profile/AjaxAction.class %JBOSS_CLSS_HOME%/frontend/actions/profile/AjaxAction.class ECHO.>>%JBOSS_HOME%/WEB-INF/web.xml


Inicie el servidor en modo de depuración y rastreará los cambios dentro de los métodos. Otros cambios Se solicitará reiniciar el módulo.


La implementación en caliente es estable solo para cambios en partes estáticas de la aplicación (jsf, xhtml, etc.).

Aquí hay una solución de trabajo, de acuerdo con JBoss AS 7.1.1.Final :

  • Construye tu proyecto
  • Navegue a [JBOSS_HOME] / standalone / tmp / vfs.
  • Abra la carpeta modificada más recientemente llamada "deployment [some_alphanumeric_values]", es decir, "deployment344b1c870c8edbd".
  • Navegue a la vista específica que desea editar (generalmente, esto está incluido en la carpeta .war empaquetada) y ábralo con un editor de texto (es decir, Notepad ++).
  • Realice los cambios que desee y guarde el archivo.
  • Actualiza la página respectiva en tu navegador. Los cambios deberían ser visibles ahora.
  • Cuando haya terminado, no olvide copiar estos cambios en su entorno de desarrollo real, reconstruir y volver a desplegar.


    Solo mis dos centavos:

    • La implementación en frío es la forma de implementar una aplicación cuando la detiene (o detiene todo el servidor), luego instala la nueva versión y finalmente reinicia la aplicación (o inicia todo el servidor). Es adecuado para implementaciones de producción oficiales, pero sería muy lento hacerlo durante el desarrollo. Olvídate del rápido desarrollo si estás haciendo esto.

    • La implementación automática es la capacidad del servidor para reexplorar periódicamente un nuevo EAR / WAR y desplegarlo automágicamente entre bastidores para usted, o para que el IDE (Eclipse) implemente automágicamente toda la aplicación cuando realiza cambios en el código fuente . JBoss hace esto, pero el departamento de marketing de JBoss llama a esto engañosamente " despliegue caliente ". Una implementación automática no es tan lenta en comparación con una implementación en frío, pero es realmente lenta en comparación con una implementación en caliente.

    • La implementación en caliente es la capacidad de implementar detrás de escena " mientras escribe ". No es necesario volver a implementar toda la aplicación cuando realiza cambios. La implementación en caliente SÓLO despliega los cambios. Cambias un código fuente de Java y ¡voilá! ya se está ejecutando. Nunca se dio cuenta de que estaba desplegándolo. JBoss no puede hacer esto, a menos que compres para JRebel (o similar) pero esto es demasiado $$ para mí (soy barato).

    Ahora mi "argumento de venta": D

    ¿Qué hay de usar Tomcat durante el desarrollo? Viene con despliegue caliente todo el día ... gratis. Lo hago todo el tiempo durante el desarrollo y luego despliego en WebSphere, JBoss o Weblogic. No me malinterpreten, estos tres son excelentes para la producción, pero son realmente IMPRESIONANTES para un desarrollo rápido en su máquina local. La productividad del desarrollo se va por el desagüe si usa estos tres durante todo el día.

    En mi experiencia, dejé de usar WebSphere, JBoss y Weblogic para un desarrollo rápido. Todavía los tengo instalados en mi entorno local, pero solo para las pruebas ocasionales que pueda necesitar ejecutar. No pago por JRebel todo el tiempo, obtengo una increíble velocidad de desarrollo. ¿Mencioné que Tomcat es totalmente compatible con JBoss?

    Tomcat es gratuito y no solo tiene despliegue automático, sino también implementación REAL (código Java, JSP, JSF, XHTML) a medida que escribe en Eclipse ( sí, lo lee bien ). MYKong tiene una página ( https://www.mkyong.com/eclipse/how-to-configure-hot-deploy-in-eclipse/ ) con detalles sobre cómo configurarla.

    ¿Te gustó mi argumento de venta?

    ¡Aclamaciones!


    Solución para Netbeans 8.02 y 8.1 IDE y JBOSS EAP 6.4:

    1. Desde la pestaña Servicios de Netbeans, agregue el servidor JBOSS a su nodo "servidores".
    2. Si está usando MAVEN, netbeans compila archivos y copia los archivos en el directorio ./target. Debe crear un enlace simbólico desde. / Target a JBOSS_HOME / standalone / deployments. En Windows, un comando de ejemplo sería

      cd %JBOSS_HOME%/standalone/deployments mklink /d MyWebApplication.war %PROJECTS_HOME%/MyWebApplication/target/MyWebApplication-1.0.0

      Lo anterior crea un enlace simbólico de %JBOSS_HOME%/standalone/deployments/MyWebApplication.war to /target/MyWebApplication-1.0.0 que es donde maven transfiere todos los archivos después de la compilación, o después de que un jsp, html o cualquier otro archivo cambie.

    3. Lo último que se debe hacer es crear un archivo CentralManagement.war.dodeploy en% JBOSS_HOME% / standalone / deployments. Este archivo le indicará a JBOSS que despliegue el "archivo" de guerra como una aplicación web


    Tuve el mismo problema en mi paquete: (Adaptador de servidor Eclipse IDE + JBoss) + JBoss AS 7.0.1 (proyecto de comunidad).

    Mi solución es muy simple: debe ir al panel administrativo de JBoss (por defecto, localhost: 9990), allí en la configuración de perfil abrir Core - Deployment Scanners. Active Autodeploy-Exploded (establecido en verdadero) y, según sus deseos, puede configurar el tiempo del escáner (de forma predeterminada 5000 ms) para que sea apropiado para (puse 2000, para una publicación incremental más rápida en Eclipse cuando realizo cambios en los proyectos) . Eso es. Ahora JBoss hace que HOT se despliegue no solo para archivos HTML (JSF, XHTML, etc.), sino también para archivos de clases POJO (beans, etc.).


    Use el script Ant y haga que el objetivo se despliegue.

    El objetivo de implementación debe:

    1. Deje de JBoss
    2. Copie la oreja o la guerra en el directorio de implementación
    3. Comience JBoss

    ==> Sin caché + tampoco sin problemas de memoria después de despliegues posteriores durante la prueba.