Dernièrement et à force de créer des profiles dans Websphere Application Server, j’ai eu une forte allergie de créer des factory, des files d’attente ou même des listners. J’ai pensé donc à mettre un script permettant de faciliter la configuration des profiles d’où l’idée d’écrire cet article.
IBM propose deux langages pour la mise en Å“uvre des scripts :
1. JACL : sera déprécie dans les prochains versions, et pourtant il est opérationnel dans la version 6.1.
2. Jython : Remplacera JACL dans les futures versions, et pourtant il est déjà existant dans la version 6.1.
Dans cet article, je vais utiliser JACL (Java Command Language) qui ressemble au langage de script Tcl pour java (pour plus d’infos rendez vous ici). Et je vais me limiter dans la création des fabriques de connexions des files d’attente, et j’espère que j’aurai l’occasion de traiter les files d’attentes et les listers.
Avant de commencer il faut savoir que l’outil responsable de l’exécution du script est « wsadmin » qu’on peut retrouver dans le le dossier bin du WAS (Websphere Application Server) ou même dans le dossier bin du profile qu’on va configurer. Une question qui tombe sur la tête (sans faire du mal biensur 😛 ) : comment peut on déterminer le chemin du profile?
Tout les profiles existent dans le répertoire profiles. Par exemple, pour Linux : /opt/IBM/SDP70/Runtimes/base_v6/Profiles. Et pour windows C:\Program Files\Runtimes\base_v6\Profiles.
On va s’arrêter un peu dans les dossiers des profiles pour définir deux variables essentiels à la mise en Å“uvre du script qui sont le nÅ“ud et la cellule du serveur.
Supposant par la suite que mon profil s’appel myServerProfil, donc on aura une arborescence du genre :
C:\Program Files\Runtimes\base_v6\Profiles\myServerProfile\config\cells\myServerCell\nodes\myServerNode
ou
/opt/IBM/SDP70/Runtimes/base_v6/Profiles/myServerProfile/config/cells/myServerCell/nodes/myServerNode
Dans ce cas :
- Cellule : myServerCell
- NÅ“ud : myServerNode
Après l’identification de la cellule et le nÅ“ud, passant maintenant au script en définissant le fournisseur de la fabrique :
la commande set permet de définir des variables et les affecter des valeurs. On va l’utiliser pour définir la cellule et le nÅ“ud dans le script :
set myServerNode « myServerNode »
Pour rendre le script paramétrable et utilisable par les collègues, on va définir une variable myServer qui va contenir le nom de notre serveur WAS :
Pour récupérer l’environnement de l’exécution du script (la cellule et le nÅ“ud) on aura besoin de la commande :
A présent on va s’intéresser au attribut de la fabriques à créer. Les attributs nécessaires à la création de la fabrique sont : le nom de la fabrique et son JNDI. Pour se rassurer essayer :
sinon pour voir la liste des différents attributs possible essayer :
Pour la mise en place de la fabrique, on va utiliser les attributs suivants :
set jndi [list jndiName jms/myJNDIname]
set qManager [list queueManager APPLICATION.QUEUE.MANAGER]
set serverName [list host myHostName.dom]
set port [list port 1414]
set channel [list channel CANAL.MYCONN]
set tType [list transportType CLIENT]
set xaEnable [list XAEnabled True]
Pour pouvoir grouper les attributs dans une seule chaine afin de les passer en un seul paramètre à la commende de la création de la fabrique, on va utiliser
Pour terminer la création de la fabrique on aura besoin de la commande :
c’ètè facile non!
Attention, on n’as pas vraiment terminé :D. La fabrique qu’on vient de créer n’est encore prise en considération par le serveur WAS et il faut l’enregistrer sinon tout sera perdu après la déconnexion du serveur (fin de la session).
Pour enregistrer la fabrique et donc qu’elle soit opérationnel il est très important de faire appel à la commande :
Le code complet du script est le suivant :
set myServerCell « myServerCell »
set myServerNode « myServerNode »
set myServer « myServerProfile »
set newjmsp [$AdminConfig getid /Cell:$myServerCell/Node:$myServerNode/Server:$myServer/JMSProvider:$myProviderType/]
set name [list name MyAPPQueueManager]
set jndi [list jndiName jms/myJNDIname]
set qManager [list queueManager APPLICATION.QUEUE.MANAGER]
set serverName [list host myHostName.dom]
set port [list port 1414]
set channel [list channel CANAL.MYCONN]
set tType [list transportType CLIENT]
set xaEnable [list XAEnabled True]
set mqcfAttrs [list $name $jndi $qManager $serverName $port $channel $tType $xaEnable]
$AdminConfig create MQQueueConnectionFactory $newjmsp $mqcfAttrs
$AdminConfig save
On a bien créé le script et il faut l’exécuter, comment on l’exécute donc? Comme on a vue au début de l’article, « wsadmin » se charge d’exécuter les scripts dans WAS. Deux appel sont possible :
- A partir du bin du WAS :
- A partir du bin du profile :