2010-02-02 3 views
2

Je souhaite déployer le même fichier .war sur deux hôtes virtuels différents sur la même instance Tomcat 6. Cependant, je rencontre un problème avec le framework Spring et l'enregistrement d'un bean. Voici l'erreur que je vois ...Tomcat 6 Hébergement virtuel Application Same Spring

org.springframework.jmx.export.UnableToRegisterMBeanException: Impossible d'enregistrer MBean [[email protected]] avec la clé « EAM: nom = webConfig '; imbriqué exception est javax.management.InstanceAlreadyExistsException: EAM: name = webConfig

Je suis assez sûr que je dois définir mes contextes pour chaque hôte virtuel, mais je ne suis pas avoir de chance. Le seul correctif que j'ai trouvé qui fonctionne est de changer le nom de la clé du bean. Toute autre suggestion serait géniale.

Répondre

1

Le problème est que le nom du bean doit être unique par JVM. Puisque vous déployez deux fois la même war, vous avez deux solutions:

  1. modifier le comportement d'enregistrement de l'exportateur JMX de printemps (voir le documentation)
  2. définir votre propre ObjectNamingStrategy de changer dynamiquement le nom des haricots au démarrage (vous finiriez avec des noms comme app1.mybean et app2.mybean)
+1

je suggère déjà, mais j'ai crié dessus pour mes ennuis :) – skaffman

+1

je n'irais pas avec le (1) mais IMO le (2) est tout à fait justifiable: vous utilisez les annotations JMX et incluez la même classe dans deux de vos guerres (ce n'est pas vraiment surprenant). J'ai seulement trouvé (2) pour résoudre ce problème mais si quelqu'un a une autre solution, je suis tout oreille :-) – Vladimir

+0

Merci Vladimir, c'est le genre d'info que j'espérais. Skaffman, je ne sais pas de quoi tu parles mais tu n'as fourni aucune de ces informations. Nous pourrions comparer votre réponse à celle-ci mais d'une manière ou d'une autre elle a mystérieusement été supprimée. En outre, comment obtenez-vous "crié" à dans un forum? Tout ce que j'ai dit, c'est que vous avez essentiellement reformulé ma question sans fournir de nouvelles informations. Je ne voulais pas offenser, désolé. Merci encore, Vladimir. –