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.
- Déployer l’application en sélectionnant le répertoire
DeployementPlan/MyWebApplicationEAR
. - Accepter l’ensemble des valeurs par défaut (Next, Next, Finish)
- Activer les modifications.
Remarque : On voit que le fichier plan.xml est indiqué comme ‘Deployment Plan’
Paramétrage pour un environnement de Recette.
- Sélectionner le module MyWebApplicationDS
- 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.
- 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

- Soit avec la commande WLST updateApplication ou redeploy
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.

Commentaire
6 réponses pour " Les plans de déploiement Weblogic "
Published by Aurélien Pelletier , 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 !
Published by Nicolas , 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
Published by Benoit Moussaud , 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 ?
Published by Jim , 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?
Published by Benoit Moussaud , 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.
Published by wing , 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.