Est-ce que les services de votre machine virtuelle Java web-app re-démarrage sur redéployer à un serveur d'application?

StackOverflow https://stackoverflow.com/questions/870190

  •  22-08-2019
  •  | 
  •  

Question

Est-ce quelque chose que vous pouvez configurer et / ou en fonction de votre serveur d'applications? Je me demande si un objet singleton sera reconstruit lorsque vous choisissez de déployer l'application.

Je préférerais poser ici et essayer d'obtenir une réponse concise que googler au hasard ou le recours à la lecture J2EE Servlet Spécifications -

Était-ce utile?

La solution

Non, ce ne sera pas (au moins aucun serveur d'applications que je connais). La spécification de servlet vous donne le crochet ServletContextListener pour gérer le cycle de vie de l'application. Certains serveurs d'applications tels que JBoss ont des annotations spéciales pour les graines singleton (@service) et EJB 3.1 vous donne l'annotation @Singleton. Une autre chose à penser lors de l'utilisation singletons est ce qui se passera lorsque vous application cluster, vous avez besoin de haute disponibilité (HA) ou d'utiliser un certain type de réplication, sauf si vous utilisez une approche rien partager. caches distribués sont bons pour cette raison.

Autres conseils

La réponse courte à cette question est non. Je ne connais pas de serveur d'applications qui se comportent de cette façon. Cependant, il y a quelques choses qui devraient être signalées. Voici une explication simpliste:

Lorsque votre serveur d'applications (par exemple. JBoss w / Tomcat) démarre, il charge certaines classes dans un chargeur de classes qui seront partagés par toutes les applications. Quand il déploie votre application, il va charger ces classes dans son propre chargeur de classe. Lorsque vous annulez le déploiement de votre application, ce chargeur de classe et toutes ses classes seront déchets collectés. Ainsi, lorsque l'application est redéployé, toutes vos classes sont rechargées, et vos singletons seront reinstantiated.

Votre application (en théorie, atleast) se comportent après redéployer, comme après un redémarrage JVM / Application Server.

Juste un dernier conseil: Si vous voulez utiliser le modèle Singleton dans votre application Java d'entreprise, assurez-vous de connaître les limites des objets singleton dans un environnement de serveur d'applications. Vous pouvez rencontrer des problèmes si vous voulez regrouper votre application, par exemple.

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