Suite à des demandes pour mettre les articles Jython sous forme de fonctions dans un seul script et je réponds à ces demandes par cet article qui va regrouper tout les fonctions de création des ressources JMS (puisque en générale on livre un seul script pour la création des ressources JMS) déjà traitées sur ce blog à savoir :
Ce Script utilisera également une fonction pour les paramètres depuis un fichier properties.
Chargement des paramètres :
Cette fonction permet de charger les paramètres depuis un fichier properties.
## permet de charger la configuration ##
#########################################
def loadProperties(propertiesFileName):
print propertiesFileName
properties = util.Properties()
try :
fileInputStream = io.FileInputStream(propertiesFileName)
properties.load(fileInputStream)
fileInputStream.close()
result= {}
for entry in properties.entrySet():
result[entry.key] = entry.value
return result
except IOError:
print ‘fichier introuvable’
sys.exit(0)
Le fichier properties peut être comme suit :
was.name = server1
#Nom du gestionnaire des files d’attentes MQ
mq.manager = MY.QUEUE.MANAGER
#Nom de la hote ou l’adresse ip du serveur MQ
mq.host = myHost
#Numéro port du gestionnaire des files d’attentes MQ
mq.port = 1420
#Nom du canal du gestionnaire des files d’attentes MQ
mq.channel = SYSTEM.ADMIN.SVRCONN
#Nom de la fabrique de connexion MQ
factory.name = myQueueManager
#Nom JNDI de la fabrique de connexion MQ
factory.jndiName = jms/myQueueManager
Création de fabrique de connexion MQ :
Cette fonction permet de créer une fabrique de connexion MQ.
## Permet de créer une fabrique de connexion MQ ##
#####################################################
def createFactory(pFactoryName, pFactoryJndiName, pMQQueueManager, pMQServer, pMQServerPort, pMQChannel, pMqJMSProfil):
oldFactory=AdminConfig.getid(‘/MQQueueConnectionFactory:’+pFactoryName)
if oldFactory!= » :
AdminConfig.remove(oldFactory)
cfname = [‘name’, pFactoryName]
cfjndi = [‘jndiName’, pFactoryJndiName]
cfManager=[‘queueManager’, pMQQueueManager]
cfServer= [‘host’, pMQServer]
cfPort=[‘port’, pMQServerPort]
cfChannel=[‘channel’, pMQChannel]
cfTransportType=[‘transportType’, ‘CLIENT’]
cfXAEnabled=[‘XAEnabled’, ‘true’]
mqqcfAttrs = [cfname, cfjndi, cfManager, cfServer, cfPort, cfChannel, cfTransportType, cfXAEnabled]
factory=AdminConfig.create(‘MQQueueConnectionFactory’, pMqJMSProfil, mqqcfAttrs)
connectionPool=AdminConfig.showAttribute(factory,‘connectionPool’)
AdminConfig.modify(connectionPool,[[‘maxConnections’,100]])
print pFactoryName + ‘ créée’
Création des files d’attente :
La fonction suivante permet de créer une files d’attente.
## Permet de créer une file d’attente ##
########################################
def createMQQueue(pQueueName, pBaseQueuName, pJndiName, pMQQueueManager, pMQJMSProfil):
oldQueue=AdminConfig.getid(‘/MQQueue:’+pQueueName)
if oldQueue!= » :
AdminConfig.remove(oldQueue)
mqName=[‘name’, pQueueName]
mqJndiName=[‘jndiName’, pJndiName]
mqBaseQueueName=[‘baseQueueName’, pBaseQueuName]
jmsTarget=[‘targetClient’, ‘JMS’]
mqqAttrs=[pMQQueueManager, mqName, mqJndiName, mqBaseQueueName, jmsTarget]
AdminConfig.create(‘MQQueue’, pMQJMSProfil, mqqAttrs)
print pQueueName+‘ créée!’
Création des ports d’écoute :
la fonciton suivante permet de créer des port d’écoute
## Permet de créer un port d’écoute ##
#######################################
def createListnerPort(pListnerName, pJndiName, pFactoryJndiName, pMessageListnerService):
oldListner=AdminConfig.getid(‘/ListenerPort:’+pListnerName)
if oldListner!= » :
AdminConfig.remove(oldListner)
messageListnerName=[‘name’, pListnerName]
messageListnerDestinationJndiName=[‘destinationJNDIName’, pJndiName]
messageListnerConnectionFactoryJndiName=[‘connectionFactoryJNDIName’, pFactoryJndiName]
messageListnerMaxMessages=[‘maxMessages’, 1]
messageListnerMaxRetries=[‘maxRetries’, 3]
messageListnerMaxSessions=[‘maxSessions’, 1]
mlattrs=[messageListnerName, messageListnerDestinationJndiName, messageListnerConnectionFactoryJndiName, messageListnerMaxMessages, messageListnerMaxRetries, messageListnerMaxSessions]
newListner = AdminConfig.create(‘ListenerPort’, pMessageListnerService, mlattrs)
AdminConfig.create(‘StateManageable’, newListner, [[‘initialState’, ‘START’]])
print pListnerName + ‘ créé!’
L’utilisation de ces fonctions se fait via un main, qui demande de saisir le chemin du fichier properties et se charge de crérer les ressources :
## Main ##
####################################
def main():
#load configuration
print ‘Entrer le chemin de la configuration (*.properties):’
configFilePath=sys.stdin.readline().strip()
configProperties = loadProperties(configFilePath)
print ‘Configuration chargée’
#Cell name
cell=AdminControl.getCell()
print ‘Cellule WAS : ‘+ cell
#Node name
node=AdminControl.getNode()
print ‘Noeud WAS : ‘+ node
#Server name
server=configProperties[‘was.name’]
print ‘Serveur WAS : ‘ + server
#Queue Manager name
mqQueueManager=configProperties[‘mq.manager’]
print ‘Gestionnaire MQ : ‘ + mqQueueManager
#MQ factory name
factoryName=configProperties[‘factory.name’]
print ‘Nom de la fabrique de connexion MQ : ‘ + factoryName
#MQ factory JNDI name
factoryJndiName=configProperties[‘factory.jndiName’]
print ‘Nom JNDI de la fabrique de connexion MQ : ‘ + factoryJndiName
#MQ server name
mqServerHost=configProperties[‘mq.host’]
print ‘Hôte du gestionnaire MQ : ‘ + mqServerHost
#MQ server port
mqServerPort=configProperties[‘mq.port’]
print ‘Port du gestionnaire MQ :’ + mqServerPort
#MQ Channel
mqChannel=configProperties[‘mq.channel’]
print ‘Canal du gestionnaire MQ :’ + mqChannel
jmsProvider=‘WebSphere MQ JMS Provider’
baseQueueManagerName=[‘baseQueueManagerName’, mqQueueManager]
mqJMSProfil = AdminConfig.getid(‘/Cell:’+cell+‘/Node:’+node+‘/Server:’+server+‘/JMSProvider:’+jmsProvider)
messageListnerServer=AdminConfig.getid(‘/Cell:’+cell+‘/Node:’+node+‘/Server:’+server)
messageListnerService = AdminConfig.list(‘MessageListenerService’, messageListnerServer)
##############################################################
### création de la fabrique de connexion ##
##############################################################
oldFactory=AdminConfig.getid(‘/MQQueueConnectionFactory:’+factoryName)
if oldFactory== » : #update Factory
createFactory(factoryName, factoryJndiName, mqQueueManager, mqServerHost, mqServerPort, mqChannel, mqJMSProfil)
#######################################################
### création des files d’attentes ##
#######################################################
#
createMQQueue(‘MYMQ.SERVICE.IN’, ‘MYMQ.SERVICE.IN’, ‘jms/MYMQ.SERVICE.IN’, baseQueueManagerName, mqJMSProfil)
createMQQueue(‘MYMQ.SERVICE.OUT’, ‘MYMQ.SERVICE.OUT’, ‘jms/MYMQ.SERVICE.OUT’, baseQueueManagerName, mqJMSProfil)
####################################################
### Création des ports d’écoute ##
####################################################
#create SYSP.LISTENER.CONSULTSITUATIONSOUSSYSTEME Listner
createListnerPort(‘MYSERVICELISTENER’, ‘jms/MYMQ.SERVICE.IN’, factoryJndiName, messageListnerService)
##############################################################
### Sauvegarde de la nouvelle configuration ##
##############################################################
AdminConfig.save()
print ‘Nouvelle Configuration sauvegardée’
Le script complet est le suivant :
import java.io as io
import sys
import os
#########################################
## permet de charger la configuration ##
#########################################
def loadProperties(propertiesFileName):
print propertiesFileName
properties = util.Properties()
try :
fileInputStream = io.FileInputStream(propertiesFileName)
properties.load(fileInputStream)
fileInputStream.close()
result= {}
for entry in properties.entrySet():
result[entry.key] = entry.value
return result
except IOError:
print ‘fichier introuvable’
sys.exit(0)
#####################################################
## Permet de créer une fabrique de connexion MQ ##
#####################################################
def createFactory(pFactoryName, pFactoryJndiName, pMQQueueManager, pMQServer, pMQServerPort, pMQChannel, pMqJMSProfil):
oldFactory=AdminConfig.getid(‘/MQQueueConnectionFactory:’+pFactoryName)
if oldFactory!= » :
AdminConfig.remove(oldFactory)
cfname = [‘name’, pFactoryName]
cfjndi = [‘jndiName’, pFactoryJndiName]
cfManager=[‘queueManager’, pMQQueueManager]
cfServer= [‘host’, pMQServer]
cfPort=[‘port’, pMQServerPort]
cfChannel=[‘channel’, pMQChannel]
cfTransportType=[‘transportType’, ‘CLIENT’]
cfXAEnabled=[‘XAEnabled’, ‘true’]
mqqcfAttrs = [cfname, cfjndi, cfManager, cfServer, cfPort, cfChannel, cfTransportType, cfXAEnabled]
factory=AdminConfig.create(‘MQQueueConnectionFactory’, pMqJMSProfil, mqqcfAttrs)
connectionPool=AdminConfig.showAttribute(factory,‘connectionPool’)
AdminConfig.modify(connectionPool,[[‘maxConnections’,100]])
print pFactoryName + ‘ créée’
########################################
## Permet de créer une file d’attente ##
########################################
def createMQQueue(pQueueName, pBaseQueuName, pJndiName, pMQQueueManager, pMQJMSProfil):
oldQueue=AdminConfig.getid(‘/MQQueue:’+pQueueName)
if oldQueue!= » :
AdminConfig.remove(oldQueue)
mqName=[‘name’, pQueueName]
mqJndiName=[‘jndiName’, pJndiName]
mqBaseQueueName=[‘baseQueueName’, pBaseQueuName]
jmsTarget=[‘targetClient’, ‘JMS’]
mqqAttrs=[pMQQueueManager, mqName, mqJndiName, mqBaseQueueName, jmsTarget]
AdminConfig.create(‘MQQueue’, pMQJMSProfil, mqqAttrs)
print pQueueName+‘ créée!’
#######################################
## Permet de créer un port d’écoute ##
#######################################
def createListnerPort(pListnerName, pJndiName, pFactoryJndiName, pMessageListnerService):
oldListner=AdminConfig.getid(‘/ListenerPort:’+pListnerName)
if oldListner!= » :
AdminConfig.remove(oldListner)
messageListnerName=[‘name’, pListnerName]
messageListnerDestinationJndiName=[‘destinationJNDIName’, pJndiName]
messageListnerConnectionFactoryJndiName=[‘connectionFactoryJNDIName’, pFactoryJndiName]
messageListnerMaxMessages=[‘maxMessages’, 1]
messageListnerMaxRetries=[‘maxRetries’, 3]
messageListnerMaxSessions=[‘maxSessions’, 1]
mlattrs=[messageListnerName, messageListnerDestinationJndiName, messageListnerConnectionFactoryJndiName, messageListnerMaxMessages, messageListnerMaxRetries, messageListnerMaxSessions]
newListner = AdminConfig.create(‘ListenerPort’, pMessageListnerService, mlattrs)
AdminConfig.create(‘StateManageable’, newListner, [[‘initialState’, ‘START’]])
print pListnerName + ‘ créé!’
####################################
## Main ##
####################################
def main():
#load configuration
print ‘Entrer le chemin de la configuration (*.properties):’
configFilePath=sys.stdin.readline().strip()
configProperties = loadProperties(configFilePath)
print ‘Configuration chargée’
#Cell name
cell=AdminControl.getCell()
print ‘Cellule WAS : ‘+ cell
#Node name
node=AdminControl.getNode()
print ‘Noeud WAS : ‘+ node
#Server name
server=configProperties[‘was.name’]
print ‘Serveur WAS : ‘ + server
#Queue Manager name
mqQueueManager=configProperties[‘mq.manager’]
print ‘Gestionnaire MQ : ‘ + mqQueueManager
#MQ factory name
factoryName=configProperties[‘factory.name’]
print ‘Nom de la fabrique de connexion MQ : ‘ + factoryName
#MQ factory JNDI name
factoryJndiName=configProperties[‘factory.jndiName’]
print ‘Nom JNDI de la fabrique de connexion MQ : ‘ + factoryJndiName
#MQ server name
mqServerHost=configProperties[‘mq.host’]
print ‘Hôte du gestionnaire MQ : ‘ + mqServerHost
#MQ server port
mqServerPort=configProperties[‘mq.port’]
print ‘Port du gestionnaire MQ :’ + mqServerPort
#MQ Channel
mqChannel=configProperties[‘mq.channel’]
print ‘Canal du gestionnaire MQ :’ + mqChannel
jmsProvider=‘WebSphere MQ JMS Provider’
baseQueueManagerName=[‘baseQueueManagerName’, mqQueueManager]
mqJMSProfil = AdminConfig.getid(‘/Cell:’+cell+‘/Node:’+node+‘/Server:’+server+‘/JMSProvider:’+jmsProvider)
messageListnerServer=AdminConfig.getid(‘/Cell:’+cell+‘/Node:’+node+‘/Server:’+server)
messageListnerService = AdminConfig.list(‘MessageListenerService’, messageListnerServer)
##############################################################
### création de la fabrique de connexion ##
##############################################################
oldFactory=AdminConfig.getid(‘/MQQueueConnectionFactory:’+factoryName)
if oldFactory== » : #update Factory
createFactory(factoryName, factoryJndiName, mqQueueManager, mqServerHost, mqServerPort, mqChannel, mqJMSProfil)
#######################################################
### création des files d’attentes ##
#######################################################
#
createMQQueue(‘MYMQ.SERVICE.IN’, ‘MYMQ.SERVICE.IN’, ‘jms/MYMQ.SERVICE.IN’, baseQueueManagerName, mqJMSProfil)
createMQQueue(‘MYMQ.SERVICE.OUT’, ‘MYMQ.SERVICE.OUT’, ‘jms/MYMQ.SERVICE.OUT’, baseQueueManagerName, mqJMSProfil)
####################################################
### Création des ports d’écoute ##
####################################################
#create SYSP.LISTENER.CONSULTSITUATIONSOUSSYSTEME Listner
createListnerPort(‘MYSERVICELISTENER’, ‘jms/MYMQ.SERVICE.IN’, factoryJndiName, messageListnerService)
##############################################################
### Sauvegarde de la nouvelle configuration ##
##############################################################
AdminConfig.save()
print ‘New Configuration saved’
#invocation of main
main()
En cas de soucis ou d’amélioration de ce code merci de me contacter