Je souhaite configurer Eclipse et Tomcat de manière intégrée de manière à ce que les modifications apportées à mes JSP et à mes servlets (si possible) soient immédiatement reflétées sans nécessiter de déploiement.
Ok, c’est une de ces questions qui a plein de réponses sur Internet mais qui semblent toutes différentes. (utilisez le plug-in Sysdeo, utilisez le plug-in JBOss, manipulez un Eclipse obsolète, utilisez MyEclipse à la place, etc.) et je ne pouvais pas trouver une ressource définitive à référencer. Donc, pour moi, quelle est la procédure la plus simple et la plus recommandée pour configurer cela?
Cela suppose que Eclipse et Tomcat fonctionnent indépendamment l'un de l'autre. En fait, j'ai réussi à les intégrer de manière non intensive à l'aide des instructions suivantes: 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 message détaillé )
Cela reflétera toujours les changements de 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 pour configurer l'assembly de déploiement)Cela fonctionne parfaitement pour moi de cette façon. Chaque changement non structurel est reflété immédiatement, sans redéploiement.
Mettre à jour:
Vous pouvez en savoir plus sur le méthodes de déploiement à chaud ici _.
J'ai aussi 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. Ensuite, configurez Apache-Tomcat pour vérifier si les fichiers de classe ont été mis à jour et rechargez-les s'ils le sont.
Pour configurer Tomcat afin de recharger automatiquement une classe lorsqu'elle change, vous devez
éditez $Tomcat/conf/context.xml
et réglez:
<Context reloadable="true">
Vous devrez peut-être également modifier, recharger votre fichier webapps/$YourWebApp/web.xml
et inclure:
<web-app reloadable="true">
Je ne me souviens pas si les deux modifications sont nécessaires, mais c'est ainsi que j'ai configuréMy Tomcat-6.0.18 pour le rechargement automatique.
Déni de responsabilité: Je ne suis qu'un client heureux, je ne travaille pas pour Zero Turnaround et je ne suis en aucune manière affilié à eux.
Check out JRebel - il vous permet de coder sans redémarrer l’application Web. Cela fonctionne essentiellement en instrumentant vos classes et en adaptant leurs changements. Il traite beaucoup plus de cas que de déployer à chaud , notamment:
C'est commercial , ( détails de tarification , 550 $/an à compter de juin 2018), et il a beaucoup de plugins pour les cadres tiers, y compris:
Vous obtenez un essai gratuit tout à fait sans douleur - je vous suggère de tenter le coup.
Changez votre espace de travail dans Eclipse en\Tomcat\webapps Comme c'est juste pour votre travail, cela devrait fonctionner correctement. Quelles que soient les modifications apportées à Eclipse, elles se trouvent dans le même répertoire que 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 à l’emplacement du serveur . Choisissez "Utiliser l’installation Tomcat" . Modifier ". Chemin de déploiement "vers le répertoire de déploiement de Tomcat (Ex: c:\server\Tomcat 7.0.14\webapps) . Extension de la section" Publication "" . Cochez la case "Publier automatiquement après un événement de construction" . Enregistrer. et fermez . Dans le menu Eclipse, cochez la case "Projet -> Construire automatiquement" .. Dans la vue Serveurs, cliquez avec le bouton droit de la souris sur votre serveur, "Ajouter et supprimer", publiez votre projet.
Pourquoi ne pas utiliser un serveur Tomcat intégré avec dans Eclipse s'il s'agit uniquement d'un développement? Vous pouvez configurer les serveurs sous window-> préférences. Une fois configuré, si vous avez un jsp appelé page.jsp, vous pouvez cliquer dessus avec le bouton droit de la souris et sélectionner Exécuter sur le serveur. Dans les préférences -> Général -> Navigateur Web, vous pouvez choisir la météo pour utiliser le navigateur intégré ou un navigateur externe. Apportez des modifications à votre jsp, enregistrez et actualisez votre page à partir du navigateur. Les modifications seront automatiquement répercutées une fois que vous aurez sauvegardé et actualisé votre navigateur.
Ce qui fonctionne pour moi ici est:
context.xml comme ceci:
<Context path="/myapp" docBase="myapp" debug="5"
reloadable="false" antiResourceLocking="false" antiJARLocking="true">
<!-- this because i´m using Spring 3.1 with Tomcat -->
<Loader loaderClass="org.springframework.instrument.classloading.Tomcat.TomcatInstrumentableClassLoader" />
</Context>
Ensuite, sous l'onglet Serveurs dans Eclipse, sous l'onglet "Modules", j'ai désactivé le "Rechargement automatique" pour tous les modules en cours de déploiement.
Laissez également la configuration par défaut pour permettre la publication automatique.
Et utilise Maven avec WTP, n’oubliez pas de laisser le contenu de src/main/resources, car Eclipse insiste pour que le contenu de ce dossier de la version finale soit exclu.
Seulement avec tout cela, j'ai eu plein (VM) classes hot-deploy avec des ressources hot-deploy !!!
Dans votre environnement de développement, indiquez simplement à votre serveur Tomcat de rechercher les JSP dans le répertoire dans lequel vous les développez. Dès que vous enregistrez le fichier, vous pourrez voir les modifications.
peut-on utiliser l'option ci-dessous? Double-cliquez sur Serveur dans Eclipse -> Emplacements de serveur -> Utiliser l'installation de Tomcat . Il prend le contrôle de l'installation de Tomcat . 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 aucune synchronisation: le répertoire Tomcat et le répertoire de votre projet seront toujours dans le même répertoire.
Tomcat détecte périodiquement les modifications et redéploie votre application.
Il existe également un moyen de déboguer votre application, je pense donc 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é:
le tour est joué! :)
Ce n'est peut-être pas la meilleure solution, mais cela fonctionne pour moi.
J'utilise une commande rsync pour synchroniser les modifications de mon projet jsp vers $ contextPath.
Utilisez le débogage distant dans Eclipse pour Tomcat, qui autorisera un échange de code à chaud limité. Si vous modifiez des champs statiques ou ajoutez des méthodes, vous devrez exporter le fichier jar et redémarrer le contexte.
Dans Eclipse, cliquez sur Projet dans le menu du haut et assurez-vous que «Construire automatiquement» est sélectionné. Cela a résolu mon problème. J'utilisais Eclipse avec Tomcat à l'aide des métadonnées de mon espace de travail. J'exécutais également Maven dans un projet de module Web dynamique. Pour vérifier, ajoutez votre application à Tomcat. Démarrez Tomcat à partir d’Eclipse. Assurez-vous que votre application est déployée et en cours d'exécution. Ouvrez l'onglet Console dans Eclipse. Faites un changement dans votre application. Au bout de quelques secondes, votre modification devrait être automatiquement construite et déployée sur Tomcat.
J'ai réussi à faire fonctionner cela sur mon environnement de développement à l'aide de l'agent Spring Loaded JVM. Bien que je développe des applications Web Spring, la description de ce projet mentionne qu'il est
utilisable sur n'importe quel bytecode pouvant s'exécuter sur une machine virtuelle Java
À l'aide de la configuration suivante, les modifications ont été automatiquement publiées sur une instance Tomcat attachée (méthode habituelle Eclipse WTP). 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'argument -Dspringloaded=watchJars=
VM par les commentaires de ce problème .Démarrez le serveur et publiez les projets d'application Web dynamique comme d'habitude. Encore une fois, j'ai pu tester cela avec les applications Web Spring. Par exemple, la modification de code, l'ajout/la soustraction de méthodes, etc. dans les classes @Controller ont été appliquées presque instantanément après avoir enregistré le fichier et les constructions Eclipse et publié la classe modifiée. Enfin, la section FAQ du projet Spring Loaded a mentionné quelques cas où les choses ne rechargeraient pas, ce qui nécessiterait un redémarrage du serveur/de l'application. Mais ces exceptions sont beaucoup moins fréquentes.
Remarque supplémentaire: cela NE fonctionne PAS avec le serveur Pivotal tc intégré ou le serveur VMware vFabric tc fourni avec STS. Pour ces serveurs, il existe une option "Activer le rechargement basé sur un agent Java (expérimental)", mais qui utilise l'ancienne version 1.2.0 de Spring Loaded, qui ne fonctionnait pas pour moi.
Êtes-vous disposé à utiliser Jetty à des fins de développement?
Si c'est le cas, c'est assez simple à utiliser avec Maven - lancez simplement mvn jetty:run