Je voudrais configurer eclipse et tomcat de manière intégrée afin que les modifications apscopes à mes JSP et servlets (si possible) soient reflétées immédiatement sans nécessiter de déploiement.
Ok, c’est une de ces questions qui a beaucoup de réponses sur Internet, mais elles semblent toutes différentes. (utilisez le plugin Sysdeo, utilisez le plugin JBOss, faites des trucs avec une Eclipse obsolète, utilisez plutôt MyEclipse etc.) et je n’ai pas pu trouver 1 ressource définitive à référencer. Donc, pour mon bénéfice, quelle est la procédure la plus simple et la plus recommandée pour mettre cela en place?
Cela suppose que j’exécute Eclipse et Tomcat indépendamment. En fait, j’ai réussi à les intégrer dans un mode de déploiement à chaud en suivant les instructions fournies ici: http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html
Version Eclipse Version: 3.4.2 (Ganymede) Tomcat v6.0.20
Il y a deux options.
Tout d’abord, Eclipse vous permet de le faire, avec un léger changement de configuration (voir aussi ce post détaillé )
Cela reflétera toujours les modifications du code mais ne redémarrera pas le serveur.
Deuxièmement, j’ai utilisé le plugin FileSync pendant longtemps:
WEB-INF/classes
de votre installation tomcat (c’est presque la même chose que configurer l’assemblage de déploiement) Cela fonctionne parfaitement pour moi de cette façon. Tout changement non structurel est reflété immédiatement, sans redéploiement.
Mettre à jour:
Vous pouvez en savoir plus sur les méthodes de déploiement à chaud ici .
J’ai également créé un projet qui synchronise facilement l’espace de travail avec le conteneur de servlet.
Laissez simplement eclipse écrire les fichiers de classe directement dans le répertoire $ TOMCAT / webapps / MyWebApp / WEB_INF / classes. Configurez ensuite apache-tomcat pour vérifier si les fichiers de classe ont été mis à jour et rechargez-les s’ils existent.
Pour configurer tomcat afin de recharger automatiquement une classe lorsqu’elle change, vous devez
éditez $TOMCAT/conf/context.xml
et définissez:
Vous devrez peut-être également modifier et recharger votre fichier webapps/$YourWebApp/web.xml
et inclure:
Je ne me souviens plus si les deux modifications sont nécessaires, mais c’est ainsi que j’ai configuré mon tomcat-6.0.18 pour le recharger automatiquement.
Disclaimer : Je ne suis qu’un client satisfait, je ne travaille pas pour Zero Turnaround et je ne suis en aucune façon affilié avec eux.
Découvrez JRebel – il vous permet de coder sans redémarrage de l’application Web. Cela fonctionne essentiellement en instrumentant vos classes et en adaptant leurs changements. Il gère beaucoup plus de cas que le déploiement à chaud , notamment:
C’est commercial , ( détails du prix , 550 $ / an à compter de juin 2018), et il y a beaucoup de plugins pour les frameworks tiers, y compris:
Vous obtenez un essai gratuit sans douleur – je vous suggère de tenter votre chance.
Changer votre espace de travail dans Eclipse à \ tomcat \ webapps Comme il ne s’agit que de votre travail, cela devrait fonctionner correctement. Les modifications apscopes à Eclipse se trouvent dans le même répertoire. Tomcat recherche les applications à déployer
Dans la vue Serveurs, créez un nouveau serveur, n’ajoutez aucune ressource (projet) au serveur pour le moment. Double-cliquez sur le serveur dans l’emplacement des serveurs. Choisissez “Utiliser l’installation de tomcat”. Modifiez “Chemin de déploiement” dans le répertoire de déploiement tomcat (Ex: c: \ server \ Tomcat 7.0.14 \ webapps). Étendre “Section de publication”. Cochez “Publier automatiquement après un événement de construction”. Sauver et fermer. Dans le menu Eclipse, cochez “Projet -> Construire automatiquement”. Depuis la vue des serveurs, cliquez avec le bouton droit sur votre serveur, “Ajouter et supprimer”, publiez votre projet.
Pourquoi ne pas utiliser un serveur Tomcat intégré de avec in in eclipse si ce n’est que pour le développement? Vous pouvez configurer des serveurs sous window-> preferences. Une fois configuré si vous avez un fichier jsp appelé page.jsp, vous pouvez cliquer dessus avec le bouton droit de la souris et sélectionner Exécuter sur le serveur. Sous Préférences-> Général-> Navigateur Web, vous pouvez choisir la météo pour utiliser le navigateur intégré ou externe. Apportez des modifications à votre fichier jsp, enregistrez et actualisez votre page à partir du navigateur. Les modifications seront automatiquement reflétées une fois que vous enregistrez et actualisez votre navigateur.
Ce qui fonctionne pour moi ici est:
context.xml comme ceci:
Ensuite, dans l’onglet Serveurs d’Eclipse, dans l’onglet “Modules”, j’ai désactivé le “Auto Reload” sur tous les modules en cours de déploiement.
Laissez également la configuration par défaut pour laisser la publication automatique.
Et utilise Maven avec WTP, n’oubliez pas de laisser le contenu de src / main / resources, car Eclipse insiste pour exclure le contenu de ce dossier de la version finale.
Seulement avec tout cela j’ai eu des classes complètes (VM) déployées à chaud avec des ressources déployées à chaud !!!
Dans votre environnement de développement, pointez simplement votre serveur Tomcat pour qu’il recherche les fichiers JSP dans le répertoire dans lequel vous les développez. Dès que vous enregistrez le fichier, vous pourrez alors voir les modifications.
Êtes-vous ouvert à utiliser Jetty à des fins de développement?
Si c’est le cas, c’est assez simple à utiliser avec Maven – lancez simplement mvn jetty:run
Ce n’est peut-être pas le meilleur moyen, mais cela fonctionne pour moi.
J’utilise une commande rsync pour synchroniser les modifications de mon projet jsp au $ contextPath.
Utilisez le débogage distant dans Eclipse pour Tomcat, ce qui permettra un remplacement à chaud limité du code. Si vous modifiez des champs statiques ou ajoutez des méthodes, vous devrez exporter le fichier JAR et redémarrer le contexte.
pouvons-nous utiliser l’option ci-dessous? Double-cliquez sur Serveur dans eclipse -> Emplacements du serveur -> Utiliser l’installation de tomcat. Il prend le contrôle de l’installation de tomcat. Vous n’avez pas besoin de redémarrer le serveur pour modifier les classes Java.
J’ai trouvé le moyen le plus simple: utiliser des liens symboliques: je pense que c’est le moyen le plus rapide car il n’y a pas de synchronisation du tout: répertoire tomcat et votre répertoire de projet sera le même répertoire tout le temps.
Tomcat détecte régulièrement les modifications et redéploie votre application.
Il y a aussi un moyen de déboguer votre application, alors je pense humblement que c’est une bonne solution.
J’ai documenté ma solution ici , pour toute personne intéressée.
Au cas où vous êtes pressé:
voila! 🙂
J’ai réussi à le faire fonctionner dans mon environnement de développement à l’aide de l’agent JVM Spring Loaded . Bien que je développe des applications Web Spring, la description de ce projet mentionne qu’il est
utilisable sur tout bytecode pouvant s’exécuter sur une machine virtuelle Java
En utilisant la configuration suivante, j’ai pu obtenir des modifications pour publier automatiquement sur une instance Tomcat attachée (la méthode Eclipse WTP habituelle). J’utilise Spring Tool Suite 3.7.3 basé sur Eclipse Mars.2 (4.5.2).
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
.class
du projet, configurez l’ -Dspringloaded=watchJars=
VM selon les commentaires de ce problème . Démarrez le serveur et publiez les projets d’application Web dynamic comme d’habitude. Encore une fois, j’ai pu tester cela avec les applications Web Spring. Par exemple, la modification du code, l’ajout / la soustraction de méthodes, etc. dans les classes @Controller ont été appliquées presque instantanément après la sauvegarde du fichier et la génération d’Eclipse et la publication de la classe modifiée. Enfin, la section FAQ du projet Spring Loaded a mentionné quelques cas où les choses ne se rechargeraient pas, ce qui nécessiterait un redémarrage du serveur / de l’application. Mais ces exceptions sont beaucoup moins fréquentes.
Une autre remarque: cela ne fonctionne PAS avec le serveur tiv pivotant intégré ou le serveur VMware vFabric tc fourni avec STS. Pour ces serveurs, il existe une option “Enable Java Agent Reloading (experimental)”, qui utilise l’ancienne version 1.2.0 de Spring Loaded, qui ne fonctionnait pas pour moi.
Dans Eclipse, cliquez sur le projet dans le menu supérieur et assurez-vous que l’option «Générer automatiquement» est sélectionnée. Cela a résolu mon problème. J’exécutais Eclipse avec Tomcat en utilisant mes métadonnées d’espace de travail. J’exécutais également Maven dans un projet de module Web dynamic. Pour vérifier, ajoutez votre application à Tomcat. Démarrez Tomcat depuis Eclipse. Assurez-vous que votre application est déployée et en cours d’exécution. Ouvrez l’onglet Console dans Eclipse. Modifiez votre application. Après quelques secondes, vous devriez voir votre modification automatiquement générée et déployée sur Tomcat.
Plus simple, plus rapide: configurez Eclipse pour générer un fichier WAR lorsque vous construisez; Dans une étape de post-construction, copiez ce fichier WAR dans votre répertoire webapps tomcat. Tomcat reconnaîtra le changement et actualisera le site sans aucun déploiement nécessaire. Notez que ce n’est pas parfait; les utilisateurs utilisant cette application Web peuvent avoir une expérience moins qu’optimale, car Tomcat redémarre l’application Web “sous” eux; mais cela correspond à votre demande.