2011-02-09 3 views
0

Nous avons actuellement un serveur Tomcat qui exécute 2 webapps; un pour les sites américains, et une autre webapp spécifiquement pour l'UE. Nous avons fonctionnellement partitionné l'application & db le long de ces lignes; une instance logique pour le site américain en cours d'exécution et une autre pour le site de l'UE.Tomcat + gestion des fichiers de propriétés

Actuellement, notre processus de libération est la suivante: - nous déployons essentiellement 2 guerre de identique sur Tomcat, sauf avant tomcat redémarrer nous changeons un fichier de propriétés pour identifier les États-Unis ou l'UE webapp

ce que nous avions aime faire est d'automatiser tout ce processus. Je voudrais déployer mes 2 guerres, sans modifier les fichiers de propriétés mais aussi sans réellement changer mes scripts de construction. Des suggestions sur la façon de supprimer cette étape manuelle?

Répondre

0

Si vous utilisez un script de génération Ant, vous pouvez utiliser la fonction filterset de la commande copy pour définir les propriétés. Vous avez besoin:

  • un fichier de propriétés modèle
  • deux fichiers de propriété (un pour chaque webapp)

Votre fichier modèle:

... 
locale = @[email protected] 
other.stuff.int = 123 
other.stuff.string = test string 
... 

(notez l'espace réservé @[email protected])

Votre fichier de propriété aux États-Unis:

... 
deploy.locale = US 
... 

Vous fichier de propriétés UE:

... 
deploy.locale = EU 
.... 

Dans votre fichier de construction Ant maintenant, vous pouvez:

  1. effacer le répertoire TMP
  2. compiler le projet dans le répertoire TMP
  3. copie le fichier de propriétés de modèle fusionné dans les propriétés US
  4. envelopper le dossier TMP dans war_for_us.war
  5. copier le war_for_us.war dans votre répertoire tomcat webapps
  6. copier le fichier de propriétés de modèle fusion dans les propriétés de l'UE
  7. envelopper le dossier TMP dans war_for_eu.war
  8. copier le war_for_eu.war dans votre répertoire tomcat webapps

Vous pouvez également arrêter & début tomcat dans le script de compilation. Voici comment copier le modèle:

<copy todir="${tmp.dir}" overwrite="true"> 
    <fileset dir="templates"> 
     <include name="template.properties" /> 
    </fileset> 
    <filterset filtersfile="us.properties" /> 
</copy> 
... 
<copy todir="${tmp.dir}" overwrite="true"> 
    <fileset dir="templates"> 
     <include name="template.properties" /> 
    </fileset> 
    <filterset filtersfile="eu.properties" /> 
</copy> 

Voir this post pour d'autres conseils ant deploy.

0

Vous pouvez également le faire par programme. Tout d'abord, vous devez implémenter aorg.apache.catalina.LifeCycleListener.Il contient une seule méthode

/** 
* Acknowledge the occurrence of the specified event. 
* 
* @param event LifecycleEvent that has occurred 
*/ 
public void lifecycleEvent(LifecycleEvent event); 

Pour le paramètre d'événement, vous devez écouter les événements déployés en contexte. Vous pouvez regarder http://tomcat.apache.org/tomcat-7.0-doc/config/listeners.html pour quelques exemples.

Vous mettrez l'auditeur dans le fichier server.xml de Tomcat comme

<Listener className="your implementation class name"/> 

J'espère que cela aide