2010-07-13 3 views
1

J'ai deux applications Web fonctionnant dans le même conteneur Servlet (Tomcat), A et B. Ces deux applications se connectent à l'aide de Spring Remoting. Au démarrage, B doit appeler A pour ouvrir une connexion automatiquement, c'est un appel d'authentification très simple.Le contexte d'application de Spring empêche le démarrage d'autres applications dans le même conteneur de servlets

Cependant, puisque B est (dans mon cas) chargé avant que le contexte d'application A, B ne bloque jusqu'à ce que l'application entière soit démarrée. Cela signifie que l'application B sera bloquée jusqu'à ce que les délais expirent, et seulement A est autorisé à démarrer, mais à ce stade, B est maintenant incapable de se connecter à A et la connexion requise entre deux applications Web ne sera pas créée .

Alors, comment puis-je contourner ce problème? Je suis actuellement en train d'accrocher la commande de connexion en utilisant InitializingBean et le contexte de l'application est initialisé en utilisant un écouteur.

+0

De Tomcat Wiki à http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27 il semble que vous ne pouvez pas spécifier un ordre de démarrage pour Webapp –

+0

@Script Runner: Je sais, c'est pourquoi je J'ai ce problème. – Esko

+1

Pouvez-vous nous montrer comment vous utilisez Spring Remoting? Vous pourriez être en mesure d'utiliser l'initialisation paresseuse, selon la façon dont vous avez branché les choses. – skaffman

Répondre

0

Deux possibilités viennent à l'esprit:

  • exécuter deux instances de Tomcat, sur des ports différents.
  • effectuer l'authentification dans un nouveau thread (de préférence en utilisant un ExecutorService). Ainsi, le thread "principal" ne bloquera pas et le déploiement se poursuivra.
+0

L'exécution des deux applications dans le même conteneur de servlet est en fait une exigence, donc la première option est malheureusement hors de question. J'essaie d'éviter le code standard pour l'exécution du "connecteur", car sinon il va être utilisé comme un haricot normal et cela nécessiterait une mise en place supplémentaire pour le remettre à l'état "normal". – Esko

Questions connexes