Quel est le moyen idéal de configurer Tomcat pour servir directement à partir de l'annuaire de mon projet à l'intérieur de mon espace de travail? ( associé ) p>
Je veux que mes ressources Web statiques fortes> sont instantanément disponibles à tout moment, je leur modifiais sans avoir à les publier dans un répertoire distinct. Il semble que la meilleure façon d'accomplir est de servir des fichiers directement plutôt que d'une copie publiée / déployée du fichier. P>
Alternativement, je suis ouvert à d'autres options (différents serveurs d'applications ou IDes) qui permettent de développer des applications Web Java beaucoup plus rapidement. Publier et redéployer chaque petit changement consiste à manger trop de temps. p>
J'ai essayé Jrebel et Filesync (et ils travaillent tous les deux dans un certain degré) mais ils essaient de corriger un problème qui ne devrait pas exister. p>
9 Réponses :
Par défaut, il partage uniquement les applications situées dans vérifier le Documentation pour attribut J'espère que cela a aidé. P> $ catalina_home / webapps code>. Vous pouvez le changer dans le
$ catalina_base / conf / conf / server.xml code> dans le
appbase < / code>. p>
Normalement WebApplications sont hébergés dans le répertoire WebApps, mais il est également possible de configurer un répertoire externe en tant que répertoire hôte WebApplication de Tomcat. Vous pouvez simplement définir votre répertoire de sortie de projet Eclipse Workspace comme base d'applications. Cela peut être fait soit à l'aide de la demande de gestionnaire de Tomcat pour déployer une application à partir d'un répertoire externe, soit en modifiant simplement Server.xml (qui est sous Conf répertoire) pour définir votre application comme ci-dessous:
.... <Context docBase="D:\your\eclipse\workspace\project\WebContent" path="/projectbaseurl" reloadable="true"/> </Host> </Engine> </Service> </Server>
On ne sait pas si vous utilisez l'approche Eclipse WTP avec Tomcat ou une stratégie de déploiement personnalisée. P>
Je suis éteint de courir Tomcat dans Eclipse en raison de la réédition peu fiable des pots modifiés. J'utilise maintenant la jetée via le plug-in Eclipse Exécuter Jetty Exécutif (disponible sur le marché Eclipse). Cela semble être exécuté à partir de l'espace de travail et ne fait pas l'approche de la republie-to-a-deployment-répertoire que Eclipse utilise avec Tomcat. P>
Vous n'obtenez pas de rechargement de code dynamique avec cette option, mais vous pouvez ajouter cette fonctionnalité avec Jrebel. P>
Aller plus loin sur le champ gauche, passez à une langue / cadre JVM qui prend en charge la vue de vos modifications instantanément sans ré-édition / redémarrer, telle que: P>
Vous avez raison - j'utilise une approche Eclipse WTP avec Tomcat et cela ne fonctionne tout simplement pas (nous ne pouvons plus être amis). Ne pas avoir rechargé de code dynamique n'est pas une grosse préoccupation. Je suis beaucoup plus intéressé à ne pas publier constamment à publier des fichiers non compilés. Cela ressemble à une bonne option. Savez-vous si l'application sera toujours portable entre Jetty / Tomcat (et tout autre serveur d'applications)?
Oui, je développe avec jetée, mais nous nous déployons sur Tomcat (c'est toujours un fichier de guerre que nous construisons / déployez).
Je n'ai jamais vraiment aimé le plugin WTP qui est emballé avec Eclipse. P>
Dans le passé, j'ai eu beaucoup de succès avec le Sysdeo Tomcat Plugin pour Eclipse . p>
Il utilise les classes compilées que Eclipse construit pour vous, de sorte que lorsque vous effectuez un changement compatible avec interface (comme changer certaines choses à l'intérieur d'une méthode), ceci est déployé immédiatement sans nécessiter de redémarrage. Changer les signatures de méthode ou l'ajout de nouvelles méthodes au sein d'une classe nécessitent un redémarrage, mais comme il n'y a pas de long étape de construction de la guerre, tout le cycle de construction / déploiement est de toute façon réduit. P>
En outre, le plug-in SYSDEO utilise les actifs statiques de votre espace de travail, donc pas besoin de copier ou de les déployer. Il suffit de changer, de rafraîchir votre navigateur et de voir le changement tout de suite. P>
Malheureusement, il semble que le développement du plug-in à une halte il y a quelques années. La dernière version prise en charge de Eclipse, selon la matrice sur son site Web, est de 3,6. Selon Cette page A> Cependant, le plugin fonctionne toujours avec Eclipse 4.2 (Juno). P>
J'espère que cela vous aidera. Utiliser Sysdeo est vraiment une expérience beaucoup plus agréable que WTP! P>
Cela semble être une bonne option - la seule chose qui me concerne est le soutien à l'avenir.
Je suggère d'utiliser sbt ainsi que son plugin Web. P>
La caractéristique clé de SO NORMAL Conteneur: Démarrer mais en l'utilisant dans le mode d'intégration continue em> (une commande commençant par ~; conteneur: début; Conteneur: Recharger / P>
blockQuote>
Il rechargera automatiquement em> une application Web lorsque le code source ou tout autre fichier a changé em>. p>
Donc, je viens de sauvegarder des servlets, des sources Java, Scala Sources tout et appuyez sur Recharger dans le navigateur, et que économise vraiment beaucoup de temps EM>. P>.
C'est le sentiment de greils, mais avec Java comme langue de programmation principale. P>
Informations supplémentaires P>
sbt code> est le mode d'intégration continue : ce moyen essentiellement,
sbt code> déclenche une commande si un fichier change. < / p>
SBT CODE> Les commandes (liées au plug-in Web) sont p>
Conteneur: Arrêtez
Conteneur: Recharger / ... Conteneur: Recharger P>
blockQuote>
~ code>) p>
sbt code> en cours d'exécution dans un terminal (je ne suis pas au courant s'il existe un plugin pour Eclipse pour la démarrer à partir de Eclipse) Li>
sbt code> peut compiler à la fois des projets Java et Scala hors de la boîte. Li>
jetty code> (je ne suis pas au courant s'il est possible d'incorporer
tomcat code> aussi) li>
sbt code>, mais vous devriez lire le didacticiel. li>
Downvoter, s'il vous plaît ajouter un commentaire. La question a été explicitement ouverte à "Autres options (serveurs d'applications)".
Je suis sûr que Maven peut faire ce genre de choses. Peut-être qu'il y a même des archétypes pour Tomcat qui ont ce type de comportement déjà configuré. P>
J'utilise un archétype maven avec JBoss comme. Lorsque je change de fichier .CS ou de mon fichier .xhtml ou de toute autre ressource statique et enregistrez-la dans Eclipse, les ressources sont immédiatement synchronisées avec mon déploiement. P>
Voici un tutoriel rapide pour ma solution: p>
Qu'est-ce que j'utilise: p>
Les versions plus anciennes ou plus récentes doivent également faire le travail. P>
Maintenant, votre projet est prêt à partir :) p>
Cela installera plusieurs plug-ins dans votre IDE, comme le jboss comme connecteur de serveur ou Maven. Li>
fenêtre -> Préférences -> Maven -> Paramètres de l'utilisateur -> Fichier ouvert em>
Ajoutez les référentiels de JBoss Maven Commencer LI>
fenêtre -> Préférences -> Serveurs -> Environnements d'exécution em>
Suivez l'assistant, jolie standard li>
Veillez à ce que la case à cocher crée un projet simple (sauter l'archétype) em> est
Choisissez l'archétype jboss-javaee6-webapp-vierge-archétype 7.1.3.cr7 em>
li>
ol>
p>
Des sons prometteurs, avez-vous un exemple?
Cela copie toujours le changé .CSS ou .xhtml à un répertoire de déploiement sur Sauvegarder, correct?
Je ne veux pas sortir comme promouvoir quoi que ce soit, mais Netbeans IDE prend en charge tous ces éléments de la boîte, pas de plug-ins nécessaire, il comprend également un pré-configuré Tomcat; p>
Il prend en charge la copie des ressources statiques sur la sauvegarde. Il n'est donc pas nécessaire de reconstruire toute votre demande: P>
p>
Comme pour tout changement Java, si vous êtes en mode de débogage, il y a un bouton ou utilisez également JREBEL (pour le déploiement de fichiers Java modifiés) qui possède d'excellentes fonctionnalités p> Appliquer des modifications du code code>, qui reconstruire et déployera vos fichiers modifiés (en supposant que aucun changement structurel n'a été apporté) P>
Je vais bien, essayez toute configuration, mais cela ressemble à "Copier les ressources statiques sur SAVE" est similaire à la configuration Eclipse / Tomcat / WTP que j'ai maintenant sur laquelle il "publie automatiquement" (AKA Copies) à un répertoire distinct. Normalement, il faut 5 à 10 secondes pour reconnaître que la copie (et un rafraîchissement du navigateur de couple) qui est la position actuelle que je suis en ce moment. Notez-vous un délai de retard entre économie et voir les modifications apportées à votre navigateur?
Pas du tout, j'utilise actuellement Eclipse en ce moment (étant forcé par ma compagnie), mais j'ai été habitué à Netbeans depuis 5 ans, j'ai essayé tout imaginable pour rendre Eclipse se comporter de la façon dont je suis habitué (temps de réponse rapide lors de l'épargne) mais ne pouvait pas le faire correctement. De toute façon, votre meilleur pari est de vérifier par vous-même, je n'ai jamais attendu plus de 2-3 secondes pour une économie pour refléter avec NetBeans. J'ai aussi besoin de noter que le projet était grand :)
désolé de tomber, mais je voulais juste entendre si vous avez eu du succès avec cela?
Pas de problème, je n'ai pas encore essayé. Je suis une sorte de bummed, il n'y avait pas de meilleur moyen de servir une application directement à partir du répertoire source (comme vous le feriez en PHP). J'ai un peu accepté que les applications Java doivent être déployées dans un répertoire distinct.
Cela dépend de la question de savoir si vous vous opposez à une action, comme frapper la publication, ou si vous vous opposez à la copie se produisant même s'il est transparent. Le contenu statique comme CSS, HTML ou JavaScript doit être automatiquement déployé (c'est-à-dire copié) lorsque vous enregistrez, en supposant que vous avez «publier automatiquement lorsque les ressources changent» sous «Publication» sélectionnée dans la configuration du serveur de Tomcat. Vous devez vous rafraîchir dans votre navigateur et voir les modifications, sauf une mise en cache de navigateur.
Si vous voulez vraiment que Tomcat ait l'air directement dans les fichiers statiques de votre projet, puis courez Tomcat sans rien déployé (à moins que vous ne disposiez de classes Java à déployer dans le même Projet) et modifier le fichier serveur.xml code> sous
serveurs code>>
Apache tomcat v7.0 à localhost-config ajoutez et ajoutez du contexte
< / Code> Éléments sous
hôte code> comme ceci: p>
Utilisez Grizzly Webserver. Il est entièrement mis en œuvre dans Java, vous disposez donc d'une indépendance complète de platform et vous pouvez la démarrer directement à partir de votre espace de travail sans configurer aucun programme externe.
Il est facile de déployer des ressources statilement. Vous devez juste dériver javax.ws.rs.core.application code> et ajouter vos ressources comme dans l'exemple.
private static GrizzlyWebServer getServer(int port,
String webResourcesPath, String contextPath) {
GrizzlyWebServer gws = new GrizzlyWebServer(port, webResourcesPath);
ServletAdapter sa = new ServletAdapter();
/* here they are added statically */
sa.addInitParameter("javax.ws.rs.Application", "com.rest.MyApplication");
sa.setContextPath(contextPath);
sa.setServletInstance(new ServletContainer());
sa.setProperty("load-on-startup", 1);
gws.addGrizzlyAdapter(sa, new String[] { contextPath });
return gws;