CICS Transaction Gateway fournit des adaptateurs de ressources qui implémentent l'interface CCI pour les interactions avec CICS.
Interface CCI (Common Client Interface)
L'interface CCI est une interface de haut niveau définie par JCA et elle peut être utilisée par les développeurs J2EE via l'interface ECI (External Call Interface) pour communiquer avec des programmes s'exécutant sur un serveur CICS.
L'interface CCI a deux types de classes distincts :
- Classes CCI génériques : les classes CCI génériques sont utilisées pour demander une connexion à un système EIS, tel que CICS, et pour exécuter des commandes sur ce système EIS, en passant des éléments en entrée et en récupérant des éléments en sortie. Ces classes sont génériques en ceci qu'elles ne passent pas d'informations qui sont spécifiques à un système EIS particulier. Les classes Connection et ConnectionFactory sont des exemples de classes CCI génériques.
- Classes CCI spécifiques à CICS : les classes spécifiques à CICS sont utilisées pour passer des informations spécifiques entre l'application client Java™ et CICS. Voici des exemples de classes spécifiques à CICS :
- ECIConnectionSpec
- ECIInteractionSpec
Les applications qui suivent le modèle d'interface de programmation utilisant l'interface CCI ont une structure commune, indépendante de l'EIS utilisé. JCA définit des objets Connection et ConnectionFactory qui représentent la connexion à l'EIS. Ces objets permettent à un serveur d'applications de gérer la sécurité, le contexte de transaction et les pools de connexions de l'adaptateur de ressources. Une application doit commencer par obtenir une fabrique de connexions à partir de laquelle une connexion peut être obtenue. Les propriétés de cette connexion peuvent être redéfinies par un objet ConnectionSpec. La classe ConnectionSpec est spécifique à CICS, comme ECIConnectionSpec. Une fois qu'une connexion a été obtenue, une interaction peut être créée à partir de la connexion pour pouvoir faire une demande particulière. Comme les connexions, les interactions peuvent avoir des propriétés personnalisées définies par la classe InteractionSpec spécifique à CICS (ECIInteractionSpec). Pour effectuer l'interaction, l'application appelle la méthode execute() et utilise des objets Record spécifiques à CICS pour stocker les données.
- Fabrique de connexions : la fabrique de connexions peut être obtenue de deux façons :
- Gérée : si vous utilisez un serveur d'application, la fabrique de connexions est normalement créée à partir de l'adaptateur de ressources au moyen d'une interface d'administration. Des propriétés personnalisées sont définies pour cette fabrique de connexions ; par exemple, la passerelle à utiliser peut être définie en tant qu'URL de connexion.
Lorsque la fabrique de connexions a été créée, elle peut être rendue disponible pour être utilisée par n'importe quelle application d'entreprise via JNDI. Ce type d'environnement est appelé environnement géré. Un environnement géré permet à un serveur d'applications de gérer les qualités de service des connexions.
- Non gérée : si vous n'utilisez pas de serveur d'applications, vous devez créer une fabrique de connexions gérée et définir ses propriétés personnalisées.
Vous pouvez ensuite créer une fabrique de connexions à partir de la fabrique de connexions gérée.
Ce type d'environnement est appelé environnement non géré. Un environnement non géré ne permet pas à un serveur d'applications de gérer des connexions.
Pour pouvoir récupérer des données auprès du serveur CICS votre application J2EE :
- Utilise l'objet ConnectionFactory pour créer un objet Connection.
- Utilise l'objet Connection pour créer un objet Interaction.
- Utilise l'objet Interaction pour exécuter des commandes sur le système EIS.
- Ferme l'interaction et la connexion.
L'exemple suivant montre l'utilisation des interfaces CCI J2EE pour exécuter une commande sur un système EIS :
ConnectionFactory cf = [Lookup from JNDI namespace]
Connection conn = cf.getConnection();
Interaction int = conn.createInteraction();
int.execute([Input output data]);
int.close();
conn.close();