Question

J'utilise serveur jboss et ayant toutes mes classes dans un fichier jar.
Maintenant, si je change l'un des fichiers java, je dois remplacer le fichier de classe dans le pot et doivent redémarrer le serveur.
Est-il possible de charger dynamiquement le fichier de classe nouvellement créée sans redémarrage du serveur?

Merci à l'avance.

Était-ce utile?

La solution

J'ai eu un grand succès avec JRebel (http://www.zeroturnaround.com/jrebel/). Ceci est un très bon produit qui permet la classe transparente rechargeant pour la grande majorité des modifications que vous pouvez faire à une classe Java. Il n'y a pas remise en marche de l'sever application ou même l'application nécessaire, les classes simplement rechargent dans les coulisses.

Il est livré avec un essai gratuit de 30 jours afin que vous puissiez voir si cela fonctionne pour vous.

(Disclaimer: Je ne suis en aucun cas relié à zéro Turnaround)

Autres conseils

Il semble que vous devez duper le serveur en rechargeant votre application en modifiant web.xml - ce qui signifie que vous pouvez ouvrir web.xml dans un éditeur entrer dans un espace puis supprimer et enregistrer le fichier ou changer la date de modification du fichier avec un utilitaire.

JBoss ne semble pas avoir une fonction très pratique comme = drapeau reloadable "true" de Tomcat dans le fichier Server.xml de Tomcat.

il y a un certain nombre de solutions, aucun d'entre eux particulièrement propre ou facile.

Comme indiqué, le changement de web.xml provoquera le contexte de recharger et donc actualiser le code source et cela peut être fait sans redémarrer le serveur. Cela fonctionne parce que "WEB-INF / web.xml" est configuré comme WatchedResource dans le fichier TOMCAT / conf / context.xml. C'est chaque contexte hérite ce paramètre et surveille automatiquement ce fichier. Vous pouvez supprimer ce comportement, mais vous pouvez également fournir des valeurs WatchedResource dans votre web.xml pour regarder des fichiers supplémentaires. Bien que je ne recommande pas, vous pouvez ajouter tous vos fichiers de classe à cela et le contexte serait recharger lorsque vous modifiez un fichier.

Une meilleure solution repose sur le fait qu'une classe peut être rechargée lorsque vous mettez le ClassLoader qui a chargé la classe. Par conséquent, si vous gérez votre code permutables à chaud dans votre propre ClassLoader alors vous pouvez actualiser votre code sans redémarrer le contexte si vous actualisez la ClassLoader. Plus facile à dire qu'à faire, malheureusement, mais il peut vous aider à démarrer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top