Cette prise en charge vous permet de construire une application J2EE pour regrouper un ensemble de changements en une seule transaction, ou une seule unité de travail, de manière à ce que les changements au sein d'une transaction soient tous effectués ou annulés. Votre application peut ainsi s'exécuter sur un serveur d'applications compatible avec J2EE (tel que WebSphere Application Server, par exemple) et accéder de manière coordonnée aux transactions et données IMS. La gestion de la transaction globale garantit quant à elle l'intégrité des données dans IMS.
Lorsque vous modifiez vos ressources protégées, vous souhaitez garantir que ces changements sont correctement effectués. En tant que client d'une banque, par exemple, vous voulez effectuer un transfert de votre compte épargne sur votre compte courant. Vous voulez être sûr que le débit sur votre compte épargne et le crédit sur votre compte courant sont effectuez simultanément. Vous ne souhaitez pas que cette transaction s'effectue en partie, c'est-à-dire que la somme prévue soit prélevée sur votre compte épargne mais ne soit pas déposée sur votre compte courant.
Prenons comme autre exemple un vol San Francisco-Paris. Vous voulez acheter un billet mais il n'y a pas de vol direct. A moins de réussir à réserver un billet jusqu'à Chicago puis un autre billet de Chicago à Paris, vous ne pourrez pas vous rendre à Paris. Vous allez donc "annuler" votre décision de vous rendre à Paris car il n'est pas intéressant pour vous d'avoir une place réservée pour une partie seulement de votre voyage.
Dans les deux exemples que nous venons de voir, plusieurs petites transactions sont nécessaires à l'accomplissement d'une plus grande transaction. Si vous rencontrez des problèmes avec l'une des transactions, vous ne souhaitez pas valider la transaction globale (transférer votre argent ou partir pour Paris). Vous préférez annuler chaque étape de la transaction afin qu'aucune des petites transactions ne soit validée. Afin de pouvoir transférer votre argent ou de pouvoir vous rendre à Paris, vous souhaitez que la gestion des transactions soit coordonnée pour accomplir la transaction globale.
Afin de garantir un processus de transaction coordonné, la plateforme J2EE (qui consiste en un serveur d'application J2EE, des composants d'application J2EE et un adaptateur de ressources d'architecture J2EE Connector) fournit un environnement de traitement réparti des transactions dans lequel les transactions sont gérées de manière transparente et les ressources sont mises à jour puis récupérées de manière coordonnée entre plusieurs plateformes.
Un serveur d'applications compatible avec J2EE (tel que WebSphere Application Server) utilise un gestionnaire de transactions Java, également connu sous le nom coordinateur externe, pour communiquer avec les composants d'application (par exemple, servlets Java ou Enterprise Java Beans) et les gestionnaires de ressources (par exemple, IMS ou DB2) via des adaptateurs de ressources (par exemple, l'adaptateur de ressources IMS TM pour coordonner une transaction.
Si elle est coordonnée par un gestionnaire de transactions, une transaction est alors considérée comme globale. Si elle est coordonnée par un gestionnaire de transactions et plusieurs gestionnaires de ressources, le coordinateur externe utilise un protocole de validation en deux phases.
Dans l'un des exemples précédents, vous souhaitez effectuer un transfert depuis votre compte épargne sur votre compte courant. Si les informations de votre compte épargne et les informations de votre compte courant résident sur des gestionnaires de ressources distincts (par exemple, votre compte épargne réside sur IMS et votre compte courant sur DB2), le gestionnaire de transactions du serveur d'application (WebSphere Application Server) permet à l'application de coordonner de manière transparente les changements entre IMS et DB2 grâce au processus de validation en deux phases. Plus précisément, le gestionnaire de transactions travaille avec l'adaptateur de ressources IMS pour coordonner les changements dans IMS.
L'adaptateur de ressources IMS TM est conçu pour fonctionner avec le gestionnaire de transactions Java dans la plateforme J2EE, les services RRS (Resource Recovery Services) de z/OS et IMS Connect et apporter des changements cohérents à IMS et à d'autres ressources protégées.
Pour prendre part au traitement de validation en deux phases avec IMS, l'adaptateur de ressources IMS TM utilise le protocole de point de synchronisation du niveau de synchronisation OTMA IMS. Pour prendre part au traitement de la transaction globale et de la validation en deux phases lorsque des changements sont requis par une application distante, IMS utilise RRS sous z/OS.
Si on se place du côté d'IMS, RRS fonctionne en tant que "coordinateur externe" ou gestionnaire de point de synchronisation pour coordonner la mise à jour et la récupération des ressources. L'adaptateur de ressources IMS TM et IMS Connect interagissent avec le gestionnaire de transactions Java fonctionnant sur le serveur d'applications et RRS sous z/OS pour qu'une transaction globale sur une plateforme J2EE puisse prendre part à une mise à jour coordonnée avec IMS fonctionnant sur l'hôte.
Lorsque vous configurez une application J2EE pour exécuter une transaction globale, vous devez sélectionner l'un des deux protocoles de communication disponibles à utiliser entre IMS Connector for Java et IMS Connect. Les deux protocoles de communication pris en charge par IMS Connector for Java et IMS Connect sont TCP/IP et Local Option.
Dans la portée d'une transaction globale, votre composant d'application J2EE peut accéder à une transaction IMS en établissant une connexion TCP/IP avec IMS Connect. C'est-à-dire que l'adaptateur de ressources IMS TM interagit avec le gestionnaire de transactions Java via le protocole X/Open (XA) pour gérer le traitement de la transaction globale et de la validation en deux phases. Ce protocole définit un ensemble d'interfaces et d'interactions décrivant l'interaction entre le gestionnaire de transactions Java et les gestionnaires de ressources dans un environnement de traitement réparti des transactions. L'adaptateur de ressources IMS TM, conjointement avec IMS Connect, utilise le protocole XA et fonctionne avec IMS et RRS (Resource Recovery Services) sous z/OS pour apporter des changements cohérents.
Restrictions : RRS doit s'exécuter sur le même système MVS qu'IMS Connect.
Pour la configuration de RRS sur IMS Connect, reportez-vous au Guide et références IMS Connect (SC27-0946). Pour plus d'informations sur le protocole de communication TCP/IP relatif au traitement d'une transaction globale et de la validation en deux phases, voir Plateformes et des protocoles de communication : le point sur la question et Environnement de la validation en deux phases : le point sur la question.
Si votre composant d' application fonctionne sur WebSphere Application Server for z/OS, vous pouvez soumettre les messages de transaction IMS à l'aide du protocole Local Option et contribuer au traitement de la transaction globale. Ce dernier est coordonné par RRS sous z/OS et WebSphere Application Server for z/OS. IMS Connector for Java est compatible avec RRS et a été spécialement conçu pour fonctionner avec RRS de telle manière que le gestionnaire de transactions Java dans WebSphere et IMS, en tant que gestionnaire de ressources, puissent ainsi fonctionner ensemble afin d'apporter des changements cohérents à plusieurs ressources protégées. Le protocole XA n'est pas utilisé par l'adaptateur de ressources IMS TM pendant l'exécution d'une transaction globale avec Local Option.
Pour plus d'informations sur le protocole de communication Local Option relatif au traitement d'une transaction globale et de la validation en deux phases, voir Plateformes et des protocoles de communication : le point sur la question, Prérequis de la validation en deux phases et Environnement de la validation en deux phases : le point sur la question.
Transaction locale
L'architecture de connexion J2EE définit l'interface javax.resource.cci.LocalTransaction afin de permettre une coordination locale d'une transaction par un gestionnaire de ressources, plutôt que par un gestionnaire de transactions. Cependant, l'adaptateur de ressources IMS TM prend uniquement en charge la coordination de transactions avec un gestionnaire de transactions. Ainsi, IMS Connector for Java ne prend pas en charge l'interface javax.resource.cci.LocalTransaction. Si vous appelez la méthode IMSConnection.getLocalTransaction(), vous obtiendrez l'exception NotSupportedException. Afin de pouvoir utiliser la prise en charge d'une transaction avec l'adaptateur de ressources IMS TM, vous devez utiliser l'interface de transaction JTA ou définir un attribut de transaction approprié dans le descripteur de déploiement de votre application. Pour plus d'informations, voir Utilisation de la prise en charge d'une transaction globale dans votre application.
Traitement de la validation en une phase
L'adaptateur de ressources IMS TM prend en charge l'optimisation de la validation en une phase avec le gestionnaire de transactions. Par conséquent, si tous les changements réalisés au sein de la portée d'une transaction font partie de la même ressource IMS, le gestionnaire de transactions peut réaliser l'optimisation d'une validation en une phase c'est-à-dire qu'il envoie directement au gestionnaire de ressources la requête de la phase de validation (phase 2) sans envoyer la requête de la phase de préparation (phase 1).
Traitement de transaction non-globale
Si aucun traitement de transaction globale n'est utilisé dans l'application (lorsque l'attribut de transaction est défini sur TX_NOTSUPPORTED, par exemple), tous les traitements de transaction non-globale utilisent "Sync-On-Return" (OTMA SyncLevel=None). Le temps que la transaction IMS soit validée, la sortie a été renvoyée au client.
Traitement de transaction conversationnelle dans la portée d'une transaction globale
IMS utilise un programme conversationnel afin de diviser le traitement en une série d'interactions client-programme-client (également appelées itérations). Chaque itération représente un type de transaction conversationnelle IMS. Le traitement conversationnel est utilisé lorsqu'une transaction est constituée de plusieurs composants, chacun d'entre eux étant validé ou annulé séparément.
Pour plus d'informations sur la prise en charge des transactions globales, reportez-vous à la page Web de l'adaptateur de ressources IMS TM sur www.ibm.com/ims puis, dans la page Prise en charge, reportez-vous à la rubrique Astuces et conseils.