ANT & WLST Part 2 – Création des ressources JMS sur Weblogic server

Deuxième article de la série, si vous n’avez pas lu le premier, je vous recommande fortement de le faire !
Nous allons dans cette article ajouter aux scripts précédents, le nécessaire pour créer des ressources JMS.
Les fichiers à ajouter aux précédents sont :

  • jms.properties qui contient la description de nos ressources JMS

et 3 scripts WLST qui vont créer les ressources JMS

  • createJMSCommonResources.py
  • createJMSDistQueues.py
  • createJMSQueues.py

Ces 3 scripts vont nous permettront de faire apparaitre la notion de dépendance entre exécution dans le script ANT. Mais commençons par examiner le fichier de propriétés 🙂

Fichiers de propriétés

jms.properties

[sourcecode language= »java »]
# Liste des queue JMS a creer
jms.to.create = queue.a.1,queue.a.2,queue.b.1
# Propriété
server.instance.name = soa_server1
jms.server = JMSServer_1
jms.module = JMSModule_1
jms.subdeployment = Subdeployment_1
## La file distribuée Queue_A_DistQueue aura deux membres
## Queue A1 et Queue A2
# Définition de la Queue A1
queue.a.1.jms.queue.name = Queue_A1
queue.a.1.jms.distributed.queue.name = Queue_A_DistQueue
# Définition de la Queue A2
queue.a.2.jms.queue.name = Queue_A2
queue.a.2.jms.distributed.queue.name = Queue_A_DistQueue
## La file distribuée Queue_B_DistQueue aura deux membres
## Queue B1 et Queue B2
# Définition de la Queue B1
queue.b.1.jms.queue.name = Queue_B1
queue.b.1.jms.distributed.queue.name = Queue_B_DistQueue
[/sourcecode]
Comme pour les bases de données, nous utilisons une liste pour déclarer toutes les files JMS à créer. Une partie est dédiée à la déclaration des propriétés permettant de créer les ressources dites communes (JMS Server, Modules, Subdeployment).
Nous déclarons ensuite les files à créer, ainsi que la file distribuée de laquelle elle sera membre. Vous n’êtes pas obligé de créer des files distribuées, elles permettent simplement de montrer un exemple de création dans le script WLST.

Fichier ANT

Le fichier ANT est le même que dans l’article précédent. Il suffit d’ajouter les blocs suivants dans les bonnes parties.
Dans la partie de déclaration des scripts WLST à utiliser :
[sourcecode language= »xml »]
<property name="jms.common.ressource.creation.script" value="wlst/createJMSCommonResources.py"/>
<property name="jms.queues.creation.script" value="wlst/createJMSQueues.py"/>
<property name="jms.distributed.queues.creation.script" value="wlst/createJMSDistQueues.py"/>
[/sourcecode]
Partie de déclaration des taches ANT invocables :
[sourcecode language= »xml »]
<!– Tache de création des ressources JMS Communes –>
<target name="createJMSCommonRessources">
<echo message="importscript: ${jms.common.ressource.creation.script}"/>
<java classname="weblogic.WLST" fork="true">
<arg line="${jms.common.ressource.creation.script} ${wls.server} ${wls.username} ${wls.password} ${wls.instance}"/>
<classpath refid="class.path"/>
</java>
</target>
<!– Tache de création des files JMS distribuées –>
<target name="createJMSDistQueue" depends="createJMSCommonRessources">
<echo message="importscript: ${jms.distributed.queues.creation.script}"/>
<java classname="weblogic.WLST" fork="true">
<arg line="${jms.distributed.queues.creation.script} ${wls.server} ${wls.username} ${wls.password} ${wls.instance}"/>
<classpath refid="class.path"/>
</java>
</target>
<!– Tache de création des files JMS –>
<target name="createJMSQueue" depends="createJMSDistQueue">
<echo message="importscript: ${jms.queues.creation.script}"/>
<java classname="weblogic.WLST" fork="true">
<arg line="${jms.queues.creation.script} ${wls.server} ${wls.username} ${wls.password} ${wls.instance}"/>
<classpath refid="class.path"/>
</java>
</target>
[/sourcecode]
Je vous parlais tout à l’heure de la notion de dépendance, vous pouvez voir dans la déclaration de chaque tache ANT le mot clé « dépends » qui permet de créer un lien de dépendance avec une ou plusieurs autres taches. Ainsi lorsque vous appellerez la tache createJMSQueue les taches createJMSCommonRessources et createJMSDistQueue seront d’abord exécutées.

Fichiers WLST

createJMSCommonResources – Création des ressources communes JMS

Les fichiers WLST ont la même structure que dans l’article précédent, c’est pourquoi, je ne montrerai que la 3eme partie contenant la fonction principale du script :
[sourcecode language= »python »]
#=======================================================================================
# @@ 3eme partie : createJMSQueue, créée des ressources JMS Communes
#=======================================================================================
def createJMSCommonRessources():
try:
servermb=getMBean(‘Servers/’+serverInstance)
if servermb is None:
print ‘@@@ No server MBean found’
else:
# Creation du JMS Server
print ‘@@@ Creating JMS Server ‘+JMSProperties[‘jms.server’]
cd("/JMSServers")
jmsServer = cmo.lookupJMSServer(JMSProperties[‘jms.server’])
if jmsServer == None:
jmsserver1mb = create(JMSProperties[‘jms.server’],’JMSServer’)
jmsserver1mb.addTarget(servermb)
else :
print ‘@@@ ‘+JMSProperties[‘jms.server’]+’ already exists’
# Creation du JMS Module
print ‘@@@ Creating JMS Module’+JMSProperties[‘jms.module’]
cd(‘/JMSSystemResources’)
jmsServer = cmo.lookupJMSSystemResource(JMSProperties[‘jms.module’])
if jmsServer == None:
jmsMySystemResource = create(JMSProperties[‘jms.module’],"JMSSystemResource")
jmsMySystemResource.addTarget(servermb)
# Creation du Subdeployment
print ‘@@@ Creating JMS Subdeployment’
cd(jmsMySystemResource.name)subDep1mb = jmsMySystemResource.createSubDeployment(JMSProperties[‘jms.subdeployment’])
subDep1mb.addTarget(jmsserver1mb)
else:
print ‘@@@ ‘+JMSProperties[‘jms.module’]+’ already exists’
except:
print "Unexpected error:", sys.exc_info()[0]
raise
#=======================================================================================
# @@ 2eme Partie : Main, fonction principale du script
#=======================================================================================
((… Voir article précédent …))
# Dans le try
# Pas de boucle ici, puisqu’il n’y a pas de liste
createJMSCommonRessources()
((… Voir article précédent …))
#=======================================================================================
# @@ 1ere Partie : exécutée lors de l’appel du script WLST
#=======================================================================================
((… Voir article précédent …))
# Chargement du fichier de proprietes
JMSProperties = loadProperties("config/jms.properties")
((… Voir article précédent …))
[/sourcecode]

createJMSDistQueues – Création des files JMS Distribuées

[sourcecode language= »python »]
#=======================================================================================
# @@ 3eme partie : createJMSQueue, créée les files JMS distribuées
#=======================================================================================
def createJMSDistQueue(prefix):
try:
print "@@@ JMS : " + prefix
servermb=getMBean(‘/Servers/’+serverInstance)
if servermb is None:
print ‘@@@ No server MBean found’
else:
# Creation de la distributed queue
print ‘@@@ Creating distributed queue ‘+JMSProperties[prefix+’.jms.distributed.queue.name’]
cd(‘/JMSSystemResources/’+JMSProperties[‘jms.module’]+’/JMSResource/’+JMSProperties[‘jms.module’])
distQueue = cmo.lookupDistributedQueue(JMSProperties[prefix+’.jms.distributed.queue.name’])
if distQueue == None:
dqueue = cmo.createDistributedQueue(JMSProperties[prefix+’.jms.distributed.queue.name’])
dqueue.JNDIName = JMSProperties[prefix+’.jms.distributed.queue.name’]
print ‘@@@ ‘+JMSProperties[prefix+’.jms.distributed.queue.name’]+’successfully created’
else :
print ‘@@@ ‘+JMSProperties[prefix+’.jms.distributed.queue.name’]+’already exists’
except:
print "@@@ Unexpected error:", sys.exc_info()[0]
raise
#=======================================================================================
# @@ 2eme Partie : Main, fonction principale du script
#=======================================================================================
((… Voir article précédent …))
# dans le try
# Creation des queues JMS
createSession()
JMSToCreate = JMSProperties[‘jms.to.create’]
print "@@@ JMS to create " + JMSToCreate
for jmsPrefix in JMSToCreate.split(‘,’):
createJMSDistQueue(jmsPrefix)
saveAndCloseSession()
((… Voir article précédent …))
#=======================================================================================
# @@ Initialisation des variables globales
#=======================================================================================
((… Voir article précédent …))
# Chargement du fichier de proprietes
JMSProperties = loadProperties("config/jms.properties")
((… Voir article précédent …))
[/sourcecode]

createJMSQueues – Création des files JMS

[sourcecode language= »python »]
#=======================================================================================
# @@ 3eme partie : createJMSQueue, créée les files JMS
#=======================================================================================
def createJMSQueue(prefix):
try:
servermb=getMBean(‘/Servers/’+serverInstance)
if servermb is None:
print ‘@@@ No server MBean found’
else:
# Creation de la queue
print ‘@@@ Creating  queue ‘+JMSProperties[prefix+’.jms.queue.name’]
cd(‘/JMSSystemResources/’+JMSProperties[‘jms.module’]+’/JMSResource/’+JMSProperties[‘jms.module’])
queueToCreate = cmo.lookupQueue(JMSProperties[prefix+’.jms.queue.name’])
if queueToCreate == None:
queue = create(JMSProperties[prefix+’.jms.queue.name’], "Queue")
queue.JNDIName = JMSProperties[prefix+’.jms.queue.name’]
# Association au subdeployment
queue.subDeploymentName = JMSProperties[‘jms.subdeployment’]
# Ajout à la distributed queue
cd(‘DistributedQueues/’+JMSProperties[prefix+’.jms.distributed.queue.name’])
cmo.createDistributedQueueMember(JMSProperties[prefix+’.jms.queue.name’])
print ‘@@@ ‘+JMSProperties[prefix+’.jms.queue.name’]+’successfully created’
else:
print ‘@@@ ‘+JMSProperties[prefix+’.jms.queue.name’]+’already exists’
except:
print "@@@ Unexpected error:", sys.exc_info()[0]
raise
#=======================================================================================
# @@ 2eme Partie : Main, fonction principale du script
#=======================================================================================
# Creation des queues JMS
createSession()
JMSToCreate = JMSProperties[‘jms.to.create’]
print "@@@ JMS to create " + JMSToCreate
for jmsPrefix in JMSToCreate.split(‘,’):
createJMSQueue(jmsPrefix)
saveAndCloseSession()
#=======================================================================================
# @@ 1ere Partie : exécutée lors de l’appel du script WLST
#=======================================================================================
# Chargement du fichier de proprietes
JMSProperties = loadProperties("config/jms.properties")
[/sourcecode]

Fichier SH

Ajouter les blocs elif suivants au bloc if du script de l’article précédent afin de prendre en
compte les nouveaux arguments :
[sourcecode language= »shell »]
### Create des Queues Distribuees
elif [ "$1" = "JMSCommon" ]
then
${ANT_HOME}/bin/ant -f build.xml createJMSCommonRessources
### Create des Queues Distribuees
elif [ "$1" = "JMSDQueue" ]
then
${ANT_HOME}/bin/ant -f build.xml createJMSDistQueue
### Creation des JMS Queues
elif [ "$1" = "JMSQueue" ]
then
${ANT_HOME}/bin/ant -f build.xml createJMSQueue
[/sourcecode]
Vous êtes maintenant prêt à créer des ressources JMS sur le serveur !
Dans l’article suivant, nous verrons comment déployer des adaptateurs de ressources (DB, JMS, BAM …etc).

2 réflexions sur “ANT & WLST Part 2 – Création des ressources JMS sur Weblogic server”

  1. Ping : Enregistrer des Scripts WLST Weblogic - ArKZoYd

  2. Ping : Développement de scripts WLST via Oracle Enterprise Pack for Eclipse : OEPE « EASYTEAM LE BLOG

Les commentaires sont fermés.