Published by

Il y a 15 ans -

Temps de lecture 5 minutes

Les plans de déploiement Weblogic

« Il faudrait pouvoir changer le nom de la DataSource en fonction des environnements »
« Ouh la la, c’est compliqué, il faut décompresser l’archive de l’application MonApp.ear et les 5 fichiers .war et les 8 fichiers .jar des ejb. Ça prendra 3 semaines minimum, et sans la documentation! »

(La fonctionnalité « plans de déploiement » décrite dans cette article est disponible à partir de WebLogic 9)

Lors de l’article précédent, nous avions montré comment packager un pool de connexions JDBC avec un EAR. Il semble évident que si cette solution est intéressante, elle n’est suffisante pour paramétrer cette application dans différents environnements projets (Recette, Pré-Production ou Production). Il n’est pas envisageable que pour chaque environnement, il faille ouvrir l’archive, modifier le fichier XML avec les nouveaux paramètres et pour finir de la refermer.
L’idée des plans de déploiement est de laisser l’archive telle quelle et de lui associer au moment du déploiement les nouveaux paramètres. Un plan de déploiement est un fichier XML qui reprend l’ensemble des nouveaux paramètres à surcharger.

Reprenons l’application MyWebApplicationEAR décrite dans la première partie et appliquons un plan de déploiement pour modifier quelques paramètres.

Préparation de l’environnement de travail

[code]
mkdir DeployementPlan
mkdir DeployementPlan/MyWebApplicationEAR
mkdir DeployementPlan/MyWebApplicationEAR/app
cp MyWebApplicationEAR.ear DeployementPlan/app

#vérifions la structure de répertoire
find DeployementPlan

./MyWebApplicationEAR
./MyWebApplicationEAR/app
./MyWebApplicationEAR/app/MyWebApplicationEAR.ear

[/code]

Génération du template du plan

WebLogic fournit un outil qui permet de générer un template de plan de déploiement basé sur les différents éléments de l’ear passé en paramètre.

[code]
cd D:xebia-blogdeploymentplan
java -classpath ${WLS_HOME}/server/lib/weblogic jar weblogic.PlanGenerator -root MyWebApplicationEAR

Generating plan for application MyWebApplicationEARappMyWebApplicationEAR.ear
Export option is: dependencies
Exporting properties…
Saving plan to D:xebia-blogdeploymentplanMyWebApplicationEARplanplan.xml…
<4 avr. 2008 18 h 03 CEST>

MyWebApplicationEAR
+—app
| MyWebApplicationEAR.ear
|
—plan
plan.xml
[/code]

Le fichier template du plan (plan.xml) a été créé dans le répertoire plan

Structure du fichier plan.xml

A ce niveau du processus, le fichier plan.xml contient uniquement la définition des différents modules qui composent l’archive EAR. On retrouve donc:

  • un module MyWebApplicationEAR.ear, de type EAR, avec 3 descripteurs de déploiement (weblogic-application.xml, application.xml et ds-jdbc.xml)
  • un module MyWebApplication.war, de type WAR, avec 2 descripteurs de déploiement (web.xml et weblogic.xml)


  MyWebApplicationEAR.ear

  

  
    MyWebApplicationEAR.ear
    ear
    
      weblogic-application
      META-INF/weblogic-application.xml
    
    
      application
      META-INF/application.xml
    
    
      jdbc-data-source
      META-INF/ds-jdbc.xml
    
  

  
  
    MyWebApplication.war
    war
    
      weblogic-web-app
      WEB-INF/weblogic.xml
    
    
      web-app
      WEB-INF/web.xml
    
  
  

Paramétrage du plan en utilisant la console d’administration

Notre plan est vide, il faut maintenant indiquer les paramètres à modifier. Dans un premier temps, le plus simple est d’utiliser la console d’administration du domaine.

  1. Déployer l’application en sélectionnant le répertoire DeployementPlan/MyWebApplicationEAR.
  2. Accepter l’ensemble des valeurs par défaut (Next, Next, Finish)
  3. Activer les modifications.

Remarque : On voit que le fichier plan.xml est indiqué comme ‘Deployment Plan’

Paramétrage pour un environnement de Recette.

  1. Sélectionner le module MyWebApplicationDS
  2. Dans le menu Configuration / ConnectionPool, modifier les propriétés UserName et Password (Recette/Recette) et Maximum Capacity=10 et Web Session Timeout (in seconds) = 360.
  3. Après les différentes phases de sauvegarde, les modifications sont inscrites directement dans le fichier plan/plan.xml, les fichiers de configuration du domaine Weblogic (config/config.xml et consorts) restent inchangés. La console WebLogic indique cette différence par un bouton ‘ReleaseConfiguration’ et non ‘Apply Changes’.

Structure du fichier plan.xml

Si on examine les modifications faites par la Console Weblogic sur le fichier plan.xml, on peut noter:

  • l’apparition d’un ensemble de nœuds gardé par <variable-definition/>. Il contient un ensemble de couples de variables (name, value) qui correspondent aux paramètres modifiés


  MyWebApplicationEAR
  
  
    
      JDBCDriverParams_PasswordEncrypted_12040376123280
      {3DES}QZJ2MfqOliA=
    
    
      JDBCConnectionPoolParams_MaxCapacity_12040378132185
      10
    
    
      JDBCProperty_user_Value_12040378358436
      recette
    
    
      SessionDescriptor_timeoutSecs_12040384414060
      360
    
  
  .....

  • la modification des nœuds . Pour chaque variable qui concerne le module, une expression XPath est définie pour permettre au serveur d’application d’effectuer la substitution avec la nouvelle valeur.

....
   
      jdbc-data-source
      META-INF/ds-jdbc.xml
      
        JDBCDriverParams_PasswordEncrypted_12040376123280
        /jdbc-data-source/jdbc-driver-params/password-encrypted
      
      
        JDBCConnectionPoolParams_MaxCapacity_12040378132185
        /jdbc-data-source/jdbc-connection-pool-params/max-capacity
      
      
        JDBCProperty_user_Value_12040378358436
        /jdbc-data-source/jdbc-driver-params/properties/property/[name="user"]/value
      
    
....

A partir de ce plan créé pour un environnement de type ‘Recette’ (plan-recette.xml), il est facile de le décliner pour d’autres environnement, ex la ‘Production’ (plan-production.xml). Les changements sont :

  • les propriétés UserName et Password (Production/Production) et
  • la propriété Maximum Capacity=20.

[code]
DeployementPlanMyWebApplicationEAR

+—app
| MyWebApplicationEAR.ear
|
—plan
plan-production.xml
plan-recette.xml
[/code]
(Note: le fichier plan.xml a été renommé en ‘plan-recette.xml’).

Utilisation du plan

Une fois les plans créés, il est très facile avec WLST de déployer l’application sur l’environnement cible avec son plan de déploiement.
Note : Une fois les fichiers de plan de déploiement créés, il n’est pas nécessaire de conserver une arborescence ./app et ./plan comme établi en début d’article.

Exemple: déploiement de l’application MyWebApplicationEAR en mode production.

[code]

deploy(appName=’MyWebApplicationEAR’,path=’/vers/monfichier/ear/MyWebApplicationEAR.ear’, planPath=/vers/mon/plan/MyWebApplicationEAR/plan/plan-production.xml’)

[/code]

Vérification avec l’application MyWebApplication:

Les plans de déploiement peuvent également servir à mettre à jour les paramètres de l’application si celle-ci est déjà déployée dans le serveur WebLogic

  • Soit avec la console d’administration, deployement –> update

Exemple:


updateApplication(''MyWebApplicationEAR','/vers/mon/plan/MyWebApplicationEAR/plan/plan-production-tuning.xml')

Conclusion

Les plans de déploiement :

  • répondent à un besoin longtemps exprimé par les utilisateurs: pouvoir modifier le paramétrage d’une application sans à nécessiter de lourdes procédures d’extraction des descripteurs de déploiement enfouis dans les archives J2EE (.ear/.jar/.war).
  • permettent de séparer clairement les rôles: d’un côté les développeurs créent l’application, de l’autre le ‘déployeur’ ou l’administrateur adapte l’application à l’environnement cible.

Documentation BEA,Deploying Applications to WebLogic Server

Published by

Commentaire

6 réponses pour " Les plans de déploiement Weblogic "

  1. Published by , Il y a 15 ans

    Je projet jndi-resources devrait t’intéresser
    http://code.google.com/p/jndi-resources/

    Il aborde la même problématique mais cross serveur d’app. Pour l’instant il ne supporte que tomcat et jboss. Mais c’est conçu pour facilement ajouter le support d’autres serveurs (pourvu que l’on connaisse son mode fonctionnement spécifique). Tu es le bienvenu pour ajouter le support de weblogic !

  2. Published by , Il y a 14 ans

    Bonjour,

    L’article est très clair, cependant j’ai une question, est-il possible de modifié d’autres paramètres que ceux repris dans les descripteurs de déploiement?

    En fait j’ai d’autre fichier qui aurait besoin d’être édités.

    Merci d’avance

  3. Published by , Il y a 14 ans

    @Nicolas les paramètres modifiables concernent ceux que l’on a dans les descripteurs de déploiement génériques J2EE & spécifiques Weblogic au niveau web, ejb et application( nœud uri) . A quels autres fichiers pensez-vous ?

  4. Published by , Il y a 13 ans

    Hi Benoit,

    This is a great article!! I’ve tried several things after going thru your blog but failed.

    Can we use a deployment plan to set an application use a work manager with constraints attached to it??

    I’ve already created the work manager & constraints thru the admin console (Global Work Manager).

    Now i want the application to use it. how do i set the dispatch policy in the plan?

  5. Published by , Il y a 13 ans

    Hi Jim, Thanks to take time read it (in French) and post a comment.
    >>Can we use a deployment plan to set an application use a work manager with constraints attached to it??
    I think With a Deployment plan you can only make assign existing item ( such as wl-dispatch-policy, max/min thread constrains or request class) not create them in the server. Keep in mind that the deployement plan only allows you to modifiy DD.
    >>Now i want the application to use it. how do i set the dispatch policy in the plan?
    This is an exemple, assign a new context root and a dispatch policy to a servlet.

    
    
      Application2
      
        
          WeblogicWebApp_ContextRoots
          "application2"
        
        
          Application_WorkManager
          "waiting.room.2.dispatch.policy"
        
        
          WorkManager_waiting.room.2.dispatch.policy_Name_12247535261400
          waiting.room.2.dispatch.policy
        
        
          WorkManager_waiting.room.2.dispatch.policy_RequestClassName_12247536926870
          
        
        
          WorkManager_waiting.room.2.dispatch.policy_MaxThreadsConstraintName_12247536926871
          MaxThreadsConstraint-App2
        
      
      
        WaitingRoomService.war
        war
        
          weblogic-web-app
          WEB-INF/weblogic.xml
          
            WeblogicWebApp_ContextRoots
            /weblogic-web-app/context-root
            replace
          
          
            Application_WorkManager
            /weblogic-web-app/wl-dispatch-policy
            replace
          
          
            WorkManager_waiting.room.2.dispatch.policy_Name_12247535261400
            /weblogic-web-app/work-manager/[name="waiting.room.2.dispatch.policy"]/name
          
          
            WorkManager_waiting.room.2.dispatch.policy_RequestClassName_12247536926870
            /weblogic-web-app/work-manager/[name="waiting.room.2.dispatch.policy"]/request-class-name
          
          
            WorkManager_waiting.room.2.dispatch.policy_MaxThreadsConstraintName_12247536926871
            /weblogic-web-app/work-manager/[name="waiting.room.2.dispatch.policy"]/max-threads-constraint-name
          
        
        
          web-app
          WEB-INF/web.xml
        
        
          wldf-resource
          META-INF/weblogic-diagnostics.xml
        
      
      D:ProjetsMyProjectswaiting-roomplans
    
    
    
  6. Published by , Il y a 13 ans

    I tried to edit in the web.xml an value, using the aformentioned method. Unfortunately I havent succeeded, can you tell me whether this is possible. I have tried to find an example on the internet but none give an example how to do it for an web.xml.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.