web-dev-qa-db-fra.com

Eclipse Kepler et JBoss Wildfly à chaud

J'essaie d'utiliser Eclipse Kepler pour Java EE 7. J'ai déjà installé JBoss Tools et ajouté JBoss Wildfly en tant que serveur. Cependant, mes modifications ne sont pas automatiquement déployées. Existe-t-il de toute façon une application pouvant être déployée automatiquement, exactement comme avec Glassfish?

19
zulqarnain

À l’aide d’Eclipse, cliquez deux fois sur votre serveur WildFly pour modifier les propriétés suivantes:

  1. Publishing : choisissez "Publier automatiquement après un événement de construction". J'aime aussi changer l'intervalle de publication à 1 seconde.
  2. Comportement du rechargement de l'application : cochez la case "Personnaliser le rechargement de l'application ..." et modifiez le modèle regex en \.jar$|\.class$

C'est tout. Bonne chance!

26
varantes

@Varantes et @Sean sont essentiellement corrects, mais ces réponses ne sont pas complètes.

Malheureusement, dans un environnement de serveur Java, le seul moyen de déployer à chaud un déploiement à chaud sans interruption est d'utiliser l'outil payant { JRebel ou gratuit à ressort .

Mais pour les petits projets, il existe quelques moyens d'accélérer le travail en déployant partiellement à chaud. Essentiellement:

  1. Lorsqu'elle est activée, l'option Publier automatiquement lorsque la ressource change Puis dans *.html, les fichiers *.xhtml sont immédiatement reflétés dès que vous actualisez le navigateur.
  2. Pour que le déploiement à chaud fonctionne également pour les fichiers *.jsp, vous devez alors Inside $ {wildfly-home} /standalone/configuration/standalone.xml Apporter les modifications suivantes:
    <jsp-config/>
    remplacer par:
    <jsp-config development="true"/>

redémarrez le serveur et profitez du déploiement à chaud des fichiers Web. 


Mais lors de la modification des fichiers source *.Java, seul un déploiement à chaud partiel est possible.
Comme @varantes l'a indiqué dans sa réponse, l'activation de Application Reload Behavior avec le motif regex défini sur \.jar$|\.class$ est une option, mais présente de graves inconvénients: tout le module est redémarré, ainsi:

  1. Cela prend du temps (en fonction de la taille d'un module).
  2. Tout l'état de la demande est perdu.

Donc, personnellement, je décourage cette solution.
JVM prend en charge (en mode débogage) l’échange de code pour le corps des méthodes. Ainsi, tant que vous ne modifiez que les corps de méthodes existantes, vous êtes chez vous (temps d'indisponibilité nul, les modifications sont immédiatement répercutées). Cependant, vous devez désactiver la publication automatique dans les paramètres du serveur, sinon l'état de l'application sera toujours détruit par cette nouvelle publication.

Mais si vous craignez énormément le code Java (ajout de classes, d’annotations, de constructeurs), malheureusement, je ne peux que recommander de définir la publication dans Ne jamais publier automatiquement (ou d’arrêter le serveur). remettez votre module (ou votre serveur allumé). Dépend de vous.


Cela fonctionne pour de petits projets Java, mais pour de plus grands projets, JRebel est inestimable (ou juste à ressort), car toutes les approches décrites ci-dessus ne sont pas suffisantes.
BTW: également à cause de tels problèmes, des solutions telles que Rails/Django/Play! Framework ont acquis une telle popularité.

Bonne chance et codage rapide!

21
G. Demecki

Je suppose que vous utilisez la dernière version de Wildfly (8.0 Beta 1 à la date de rédaction).

Dans le fichier de configuration standalone.xml, recherchez <jsp-config /> . Ajoutez l'attribut development = "true" et il devrait être déployé à chaud. La configuration résultante ressemblera à ceci:

<jsp-config development="true"/>
8
umphy

Ajouter des attributs (développement, intervalle de contrôle, intervalle de modification-test, recompilation sur échec) dans le fichier de configuration dans xPath = // servlet-container/jsp-config /

<servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only">
    <jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/>
</servlet-container>

(Cela fonctionne dans WildFly-8.0.0.Final)

4
PeterB

Démarrez le serveur en mode débogage et il suivra les chances à l’intérieur des méthodes. Autres modifications Il vous sera demandé de redémarrer le serveur.

0
erickdeoliveiraleal