Déploiement à chaud sur JBoss-comment faire pour que JBoss "voie" le changement?

je développe une application Java EE que je déploie encore et encore sur une installation JBoss locale pendant le développement. Je veux accélérer la construction en déployant à chaud mon application directement dans [JBoss]/server / default/deploy /myApp

cela semble fonctionner - mais il semble aussi y avoir un délai quelque peu arbitraire entre le déploiement dur et quand JBoss commence à utiliser les nouvelles classes. Je ne suis pas très familier avec JBoss, mais je suppose qu'il cache des classes, et que ce c'est ce qui provoque le problème.

ai-je raison, et si oui, comment puis-je faire JBoss flush it's cache?

50
demandé sur Jacob Hansson 2009-06-09 14:34:50

15 réponses

j'ai eu le même problème dans mon bundle: (Eclipse IDE + JBoss Server adapt) + JBoss AS 7.0.1 (community project).

My solution est très simple - vous devez aller dans le panneau administratif de JBoss (par défaut localhost:9990), là dans les paramètres de profil ouvrir le noyau - déploiement des Scanners. Tourner sur Autodeploy-Exploded (défini à true), et par vos souhaits vous pouvez définir le temps de scanner (par défaut 5000 ms) pour s'adapter à votre (i réglé à 2000, pour plus publication incrémentale rapide dans Eclipse quand je fais des changements aux projets). C'est tout. Maintenant JBoss fait hot deploy non seulement pour les fichiers HTML (JSF, XHTML et ainsi de suite), mais s'occupe aussi des fichiers POJO classes (beans et ainsi de suite).

107
répondu Yan Pak 2015-10-02 13:05:50

malheureusement, ce n'est pas si facile. Il y a des choses plus compliquées dans les coulisses de JBoss (la plupart liées à ClassLoader) qui vous empêcheront de déployer à chaud votre application.

par exemple, vous ne pourrez pas vous déployer à chaud si certaines de vos signatures de classes changent.

Jusqu'à présent, en utilisant MyEclipse IDE (une distribution payée de Eclipse) est la seule chose que j'ai trouvé qui fait le déploiement à chaud avec un certain succès. Pas une précision à 100%. Mais certainement mieux que les outils JBoss, Netbeans ou toute autre solution basée sur Eclipse.

j'ai été à la recherche d'outils gratuits pour accomplir ce que vous venez de décrire par demander les gens dans StackOverflow si vous voulez jeter un oeil.

7
répondu Pablo Santa Cruz 2017-05-23 11:55:13

you should try JRebel , ce qui fait que le dispositif de déploiement à chaud assez bien. Un peu cher, mais vaut la peine. Ils ont une version d'essai.

5
répondu Julien Kronegg 2012-08-06 10:00:12

hot deployment est stable uniquement pour les modifications sur les parties statiques de l'application (jsf, xhtml, etc.).

Voici une solution de travail, selon JBoss AS 7.1.1.Final :

  • Construisez votre projet.
  • Accédez à [JBOSS_HOME]/autonome/tmp/vfs.
  • ouvrir le dossier le plus récemment modifié nommé "deployment[some_alphanumeric_values]", i.e. "deplement344b1c870c8edbd".
  • naviguez vers la vue spécifique que vous voulez éditer (habituellement, ceci est inclus dans le dossier .war ) et ouvrez-la avec un éditeur de texte (i.e. Notepad++).
  • faites les changements que vous voulez et enregistrez le fichier.
  • rafraîchissez la page correspondante de votre navigateur. Les changements devraient être visibles maintenant.
  • une fois terminé, n'oubliez pas de copier ces modifications à votre environnement de développement réel, reconstruire et redéployer.

    2
    répondu toubou 2015-11-29 10:39:44

    j'ai eu le même problème, mais je pense que je l'ai sous contrôle maintenant.

    utilisez-vous eclipse ou la ligne de commande ou ??

    quand j'utilise la ligne de commande, je pense que j'ai fait "seam clean" ou "seam undeploy" ou peut-être même "seam restart" suivi de "seam explode". J'ai probablement essayé tout ça à un moment ou à un autre sans jamais chercher ce que chacun fait.

    l'idée est de supprimer le dossier de guerre déployé de deux les lieux

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

    je suis presque sûr que" seam undeploy "enlève la 1ère et" seam clean " enlève la 2ème.

    quand j'utilise eclipse( j'utilise le libre), je coupe pour la première fois " Project / Build automatiquement" Puis, lorsque je suis prêt à me déployer, je réalise soit un projet/Projet de construction, soit un projet/Projet de construction, tout dépend de ce que j'ai changé. Quand je change xhtml, le projet de construction est suffisant. Quand je change java source construire tous les travaux. Il est possible que ces faire les mêmes choses et la différence est dans mon imagination, mais une combinaison de ces trucs marchera pour toi.

    vous devez regarder la sortie cependant. Parfois, l'application n'a pas nettoyés ou annulée. Cela aurait pour résultat de ne pas voir votre changement. Parfois, j'arrête le serveur d'abord, puis je reconstruis/nettoie/déploie le projet.

    Espérons que cette aide.

    TDR

    1
    répondu april26 2009-06-10 18:43:23

    trouvé la solution sur ce lien :

    Que faire?

    1. configurer explosé guerre artefact d'avoir l'extension .de la guerre
    2. déploiement d'artefact explosé à WildFly ou Jboss
    3. configurer IntelliJ pour mettre à jour les ressources sur L'action de mise à jour

    lorsque je modifie une page (web), Je mets à jour et lorsque je rafraîchis le navigateur web: est tout là avec mon mod. J'ai configuré Jboss pour l'autoscanning (Je ne suis pas sûr que cela ait aidé)

    1
    répondu Mircea Stanciu 2014-07-30 16:49:54

    Juste mes deux cents:

    • Cold deployment est la façon de déployer une application lorsque vous l'arrêtez (ou arrêtez le serveur entier), puis vous installez la nouvelle version, et enfin redémarrez l'application (ou démarrez le serveur entier). Il est adapté pour les déploiements officiels de production, mais il serait horriblement lent à le faire pendant le développement. Oublier le développement rapide si vous faites cela.

    • auto deployment est la capacité que le serveur doit re-scanner périodiquement pour une nouvelle EAR/guerre et le déployer automagiquement dans les coulisses pour vous, ou pour L'IDE (Eclipse) pour déployer automagiquement l'application entière lorsque vous apportez des modifications au code source. JBoss le fait, mais le département de marketing de JBoss appelle cela de manière trompeuse " déploiement à chaud ". Un déploiement automatique n'est pas aussi lent qu'un déploiement par temps froid déploiement, mais c'est vraiment lent par rapport à un déploiement à chaud.

    • le déploiement à Chaud est la capacité à déployer derrière les coulisses " à mesure que vous tapez ". Pas besoin de redéployer l'ensemble de l'application lorsque vous apportez des modifications. Déploiement à chaud seulement déploie les changements. Vous changez un code source Java, et voilà! il fonctionne déjà. Tu n'as jamais remarqué qu'il le déployait. JBoss ne peut pas le faire, sauf si vous achetez pour JRebel (ou similaire) mais c'est trop $$ pour moi (je suis pas cher).

    Maintenant, mon "pitch de vente" :D

    Qu'en est-il de l'utilisation de Tomcat pendant le développement? Livré avec hot deployment toute la journée... gratuitement. Je le fais tout le temps pendant le développement et ensuite je me déploie sur WebSphere, JBoss, ou Weblogic. Ne vous méprenez pas, ces trois sont de grands pour la production, mais sont vraiment terribles pour le développement rapide sur votre machine locale. La productivité du développement est épuisée si vous utilisez ces trois-là toute la journée.

    d'après mon expérience, J'ai cessé D'utiliser WebSphere, JBoss et Weblogic pour un développement rapide. Je les ai toujours installés dans mon environnement local, mais seulement pour le test occasionnel que je pourrais avoir besoin de courir. Je ne paie pas pour JRebel pendant que j'ai une super vitesse de développement. Est-ce que J'ai mentionné que Tomcat est complètement compatible avec JBoss?

    Tomcat est libre et a non seulement Auto-déploiement, mais aussi réel déploiement chaud (code Java, JSP, JSF, XHTML) que vous dactylographiez dans Eclipse ( Oui, vous lisez bien ). MYKong a une page ( ) https://www.mkyong.com/eclipse/how-to-configure-hot-deploy-in-eclipse / ) avec des détails sur la façon de le configurer.

    avez-vous aimé mon argumentaire?

    santé!

    1
    répondu Vladimir 2016-08-31 23:43:44

    en fait, mon problème était que l'utilitaire mvn en ligne de commande ne verrait pas les changements pour une raison quelconque. J'ai activé le déploiement automatique dans le Scanner de déploiement et il n'y avait toujours pas de différence. CEPENDANT... Je tournais autour avec L'environnement Eclipse et parce que j'avais ajouté un serveur JBoss pour sa fenêtre de serveurs, j'ai découvert que j'avais la possibilité "D'ajouter ou de supprimer..."les modules dans mon espace de travail. Une fois que le projet a été ajouté chaque fois que j'ai fait un changement de code le changement de code a été détecté par le scanner de déploiement et JBoss sont passés par le cycle de mise à jour du code!!! Fonctionne comme un charme.

    Ici sont les étapes nécessaires pour configurer;

    tout d'abord si vous ne l'avez pas fait, ajoutez votre serveur JBoss à votre Eclipse en utilisant File->New->Other->Server puis allez à travers les mouvements d'ajouter votre serveur JBoss comme 7. Afin de bien localiser le répertoire que vous utilisez.

    une fois ajouté, regardez vers le bas près du bas D'Eclipse aux " serveurs" onglet. Vous devriez voir votre serveur JBoss. Mettez-le en surbrillance et cherchez "ajouter ou supprimer"...". De là, vous devriez voir votre projet.

    une fois ajouté, faites un petit changement à votre code et regardez JBoss aller en ville pour vous déployer.

    0
    répondu Perry 2014-01-11 08:48:29

    j'ai développé un projet avec Eclipse et Wildfly et le fichier EAR explosé devenait grand en raison du déploiement de toutes les bibliothèques tiers dont j'avais besoin dans l'application. Je dirigeais le déploiement vers mon dépôt Maven qui, je suppose, recopiait les bocaux à chaque fois. Donc, en redéployant l'application quand j'ai changé le code Java dans la couche service, ça devenait un cauchemar.

    s'étant alors tournés vers L'agent à Hotswap, cela a beaucoup aidé dans la mesure où voir les modifications au code EJB sans redéployer l'application.

    cependant, j'ai récemment mis à niveau vers Wildfly 10, Java 8 et JBoss Developer Studio 10 et au cours de ce processus j'ai pris le temps de déplacer tous mes jarres d'application de tierce partie par exemple primefaces dans les modules Wildfly et j'ai retiré mon Maven repo de ma configuration de déploiement. Maintenant, le redéploiement de l'ensemble de l'application qui est une assez grande via Eclipse prend seulement quelques secondes et il est beaucoup plus rapide qu'avant. Je ne ressentez même pas le besoin d'installer Hotswap et ne voulez pas le risquer de toute façon en ce moment.

    donc si vous construisez sous Eclipse avec Wildfly alors gardez votre application à l'écart des libs de tiers en utilisant les Modules Wildfly et vous serez beaucoup mieux lotis.

    0
    répondu Shaun O'Hagan 2016-08-19 20:11:05

    Solution for Netbeans 8.02 and 8.1 IDE and JBOSS EAP 6.4:

    1. de L'onglet services de Netbeans, ajoutez le serveur JBOSS à votre noeud" serveurs".
    2. si vous utilisez MAVEN, netbeans compile des fichiers et Maven copie des fichiers ./répertoire cible. Vous devez créer un lien symbolique à partir d' .\cible à JBOSS_HOME\autonome\déploiements. Sous windows, un exemple de commande serait

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

      ce qui précède crée un lien symbolique de %JBOSS_HOME%\standalone\deployments\MyWebApplication.war à \target\MyWebApplication-1.0.0 où maven transfère tous les fichiers après compilation, ou après un jsp, html ou tout autre changement de fichier.

    3. la dernière chose à faire est de créer un fichier CentralManagement.war.dodeploy dans %JBOSS_HOME%\standalone\deployments. Ce fichier dit à JBOSS de déployer le "fichier" de guerre comme une application web

    0
    répondu chrisl08 2016-09-06 13:12:21

    démarre le serveur en mode déboguage et il va suivre les changements à l'intérieur des méthodes. Autres modifications il demandera de redémarrer le module.

    0
    répondu erickdeoliveiraleal 2017-01-21 16:01:50

    j'utilise JBoss comme 7.1.1.Final . Ajouter l'extrait de code suivant dans mon site web.xml m'a aidé à changer les fichiers jsp à la volée:

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

    Espérons que cette aide.!!

    0
    répondu sidhantgupta 2017-02-09 06:24:39

    déployer l'app as exploded (projet.war folder), ajouter dans votre web.xml:

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

    mettre à jour le web.temps xml à chaque déploiement (ajouter la ligne vide):

    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
    
    0
    répondu Conete Cristian 2017-02-16 06:30:00

    ça a marché pour moi dans Eclipse Mars avec WildFly 11. Double-cliquez sur WildFly server sous serveurs pour ouvrir la page de configuration. Dans L'onglet Aperçu -> publication, choisissez "publier automatiquement lorsque les ressources changent" et définissez l'intervalle à 1. Ensuite, onglet Vue D'ensemble - > comportement de recharge de L'Application, décochez l'utilisation du modèle par défaut et définissez le modèle à \.jar$|\.class$ . Dans L'onglet déploiement, décocher le projet de déploiement sous forme d'archives compressées. Espérons que cette aide.

    0
    répondu jpllosa 2018-04-15 19:36:45

    utilisez le script Ant et faites déployer la cible.

    la cible de déploiement devrait:

    1. Arrêter JBoss
    2. copier l'oreille ou la guerre dans le répertoire de déploiement
    3. Start JBoss

    ==> Pas de mise en cache + aussi pas de problèmes de mémoire après les autres déploie au cours des essais.

    -6
    répondu ruben 2011-08-11 14:06:21