Existe-t-il un moyen d'imposer un ordre de déploiement dans tomcat6?
J'ai 3 guerres dans ma webapp. Deux d'entre eux sont construits sur les services de la troisième. Je suis dans un environnement de test, c'est à dire je n'ai pas de contrôle sur leurs architectures, donc je ne suis pas en mesure de changer une chose. Alors...
Question: Est-il un moyen de faire respecter un ordre de déploiement dans tomcat?
J'ai couru dans une question ici dans stackoverflow, mais il n'y a pas de solution.
Bien, en fait le gars suggère que le fait de changer le nom de la webapp à un ordre alphabétique aide. Cependant, je ne suis pas prêt à le faire à chaque fois que j'ai besoin de tester ceux-ci et les différentes guerres.
Je suis positif qu'il y a un moyen de le faire en configurant un des conf de tomcat .des fichiers xml. Je ne sais pas lequel.
source d'informationauteur wleao
Vous devez vous connecter pour publier un commentaire.
De l'Tomcat Wiki - Quel ordre webapps de départ (ou Comment puis-je changer l'ordre de démarrage)?
Tomcat a jamais pris en charge la spécification de l'ordre de chargement des webapps. Il y a d'autres contenants comme JBoss qui le font, mais Tomcat n'a jamais. Toute apparence de comportement qui ressemble à la charge de la commande par l'ordre alphabétique des noms des applications web est fortuite et ne pas fonctionner dans tous les cas.
Ce que vous pensez probablement est le
<load-on-startup/>
élément si laweb.xml
qui spécifie l'ordre de chargementservlets
.Qui a dit qu'il y est une solution élégante à l'aide d'un protocole de découverte de service.
Une solution est d'utiliser quelque chose comme ZeroConf et enregistrer vos services au démarrage, puis ont à charge des applications recherchent quand ces services sont disponible et avez le contact et de faire ce que jamais ils ont besoin de le faire lorsque le service est prêt. C'est la façon dont j'ai été la manipulation de multiples services qui en dépendent depuis des années maintenant. J'ai Python, Java et Erlang tous les services de la découverte les uns des autres par ZeroConf sans faille.
Il est vrai que tomcat ne fournit aucun moyen de faire appliquer ordre de déploiement.
*Tomcat déploie webapps dans l'ordre suivant:*
1.Quel que soit le Contexte Descripteurs sera déployé en premier.
2.Explosé applications web non référencé par un Descripteur de Contexte sera alors déployé. S'ils sont associés à un .Fichier WAR dans le appBase et il est plus récent que le découpage de l'application web, le explosé répertoire sera supprimé et la webapp seront redéployés à partir de l' .La GUERRE
3.La GUERRE des fichiers sera déployé
> Ici est une solution proposée:
Si vous souhaitez spécifier le déploiement de commande, puis de définir un contexte de votre application web dans $CATALINA_BASE/conf/[nom moteur]/[nom d'hôte]/MyApp.xml
Tomcat scans $CATALINA_BASE/conf/[nom moteur]/[nom d'hôte]/par l'exécution de Fichier listFiles() qui retourne un tableau de Fichier triées par valeur de hachage (OS dépendante).
Vous pouvez utiliser le code suivant pour vérifier dans quel ordre webapps sera déployé
Il y a trois façons de déployer le
webapp.war
dans Tomcat.Ajouter
Context
élément à l'intérieur d'unHost
élément dans le$CATALINA_BASE/conf/server.xml
fichier.Créer le
$CATALINA_BASE/conf/[engineName]/[hostName]/[webappName].xml
fichier avec le contenu:Ajouter le
webapp.war
fichier directement dans le$CATALINA_BASE/webapps/
répertoire.Le suivant de la séquence de déploiement se fera sur le démarrage de Tomcat:
1→2→3
Quelques explications:
$CATALINA_BASE
docBase
engineName:
Le nom du moteur associé au contexte. Le nom par défaut est
Catalina
.nom d'hôte:
Le nom de l'hôte associé au contexte. Le nom par défaut est
localhost
.Supposons que:
a.war
b.war
etc.war
.b.war
dépenda.war
.c.war
dépendb.war
.Essayez les étapes suivantes:
$CATALINA_BASE/webapps/
répertoire.créer le
$CATALINA_BASE/conf/Catalina/localhost/b.xml
fichier avec le contenu:Ajouter
Context
élément dans le$CATALINA_BASE/conf/server.xml
fichier:Référence:
Excuses pour la croix-affichage (Tomcat - départ webapps dans un ordre spécifique), mais j'ai pensé qu'il était pertinent ici aussi:
Vous pouvez définir de multiples services dans votre server.xml qui s'exécutent sur différents ports. Les services sont démarrés séquentiellement selon l'ordre qu'ils apparaissent dans le server.xml. Cela signifie que vous pouvez avoir, par exemple, la configuration de service en service pour la première fois et ensuite les applications qui en dépendent dans la seconde (j'utilise celui par défaut Catalina, l'autre pour le reste d'entre eux...)
Vous pouvez voir plus d'infos ici:
http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27
Et c'est le service que j'ai inclure avant le Catalina Service:
Comme vous pouvez le voir, j'utilise docbase plutôt que appBase, mais vous devriez être en mesure de t de configurer une autre appBase si vous préférez...
NB il est important de changer le nom de la fois le service et le moteur.
HTH
Vous pouvez toujours déplacer le premier .fichier war dans le répertoire tomcat, puis d'attendre pour elle de déployer, puis déplacez les deux dans le répertoire de tomcat. Cela permettrait de déployer la première, puis de déployer les deux autres.
Sinon, vous pouvez éventuellement utiliser le fait que le serveur Tomcat va scanner le répertoire et le déploiement de la première guerre, puis de la seconde guerre mondiale, puis de la troisième guerre par ordre alphabétique
C'est assez facile à faire si vous n'avez pas de soins de piratage d'un peu de tomcat code et de la création de votre propre instance de l'Hôte
1) Créer une sous-classe org.apache.catalina.de base.StandardHost, dire MyHost:
2) inscrivez votre classe sur votre serveur xml Hôte tag ()
Incroyable que cela puisse paraître, il résout le problème aussi longtemps que vous avez tous vos sites web app déclaré dans le bon ordre à l'intérieur de l'Hôte tag:
Thaen app1 démarre avant app2, peu importe SI vous avez utilisé.
Nous exécuter plusieurs matous. Nous pouvons mettre en place des groupes d'applications de manière indépendante en mettant le premier groupe dans un tomcat et au plus tard dans un second.
Cela suppose qu'ils ne sont pas en train de communiquer les uns avec les autres à l'aide de la JVM.