Pour accéder aux transactions IMS via l'adaptateur de ressources du gestionnaire de transactions IMS, vous pouvez écrire vous-même le code source des applications et ne pas utiliser le code d'application généré par l'environnement de développement. Cette opération est différente de l'utilisation d'un environnement de développement tel que Rational Application Developer pour créer vos propres applications en évitant le codage.
Pour écrire vous-même du code, votre application doit utiliser l'interface de programmation Common Client Interface (CCI). Cette API CCI fournit un accès aux systèmes dorsaux d'information d'entreprise (EIS) tels qu'IMS à partir des clients J2EE, tels que les beans enterprise, la technologie JSP (JavaServer Pages) et les servlets.
Vous pouvez maintenant créer un objet connexion IMS à partir de cet objet fabrique de connexions IMS. Les propriétés de l'objet connexion IMS peuvent être définies dans un objet définition de connexion IMS transmis en tant que paramètre à la méthode getConnection ou les valeurs par défaut peuvent être définies dans la fabrique de connexions IMS qui sera utilisée. Vous pouvez créer une interaction IMS à partir de la connexion IMS après l'obtention de cette dernière. Une interaction IMS représente l'interaction qui va être exécutée sur cette connexion. Comme pour les connexions, les interactions peuvent avoir des propriétés personnalisées prises dans la classe définition d'interaction IMS.
Pour effectuer une interaction, l'application appelle la méthode execute() de l'objet interaction IMS, lui transférant des objets entrée et sortie afin de mettre les données en attente. Un tableau d'octets d'entrée doit être créé et contenir les valeurs de chaque zone du message d'entrée vers IMS. Un tableau d'octets de sortie doit également être créé pour mettre en attente le message de réponse renvoyé par IMS. La valeur de chaque zone du message de sortie est extraite du tableau d'octets de sortie.
Vous pouvez écrire vous-même les tableaux d'octets d'entrée et de sortie, ou bien vous pouvez utiliser les options J2C dans Rational Application Developer (RAD) pour créer les liaisons de données Java des messages d'entrée et de sortie de votre application CCI, même si vous ne prévoyez pas d'utiliser RAD pour le développement de l'application.
public void execute() { try { ConnectionFactory cf = null; if (isManaged) { //Utiliser la recherche JNDI pour obtenir une instance fabrique de connexions - considère que la fabrique de connexions a un nom JNDI de MyIMS Context ic = new InitialContext(); cf = (ConnectionFactory) ic.lookup("MyIMS"); } else { //Créer et définir des valeurs pour la fabrique de connexions gérée IMSManagedConnectionFactory mcf = new IMSManagedConnectionFactory(); mcf.setDataStoreName("MyDSName"); mcf.setHostName("myHostNm"); mcf.setPortNumber(new Integer(1234)); //Créer une fabrique de connexions à partir de la fabrique de connexions gérée cf = (IMSConnectionFactory) mcf.createConnectionFactory(); } Connection connection = cf.getConnection(); //Créer une interaction avec IMS pour exécuter la transaction IVTNO IMSInteraction interaction = (IMSInteraction) connection.createInteraction(); IMSInteractionSpec ixnSpec = new IMSInteractionSpec(); ixnSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND_RECEIVE); //Créer un nouvel enregistrement d'entrée input = new PhoneBookInputRecordField("cp037"); input.setIn__ll((short)59); input.setIn__zz((short) 0); input.setIn__trcd("IVTNO"); input.setTranCodeLength(10); input.setIn__command("DISPLAY"); input.setIn__name1("LAST3"); input.setIn__name2(""); input.setAllFieldsGiven(false); PhoneBookOutputRecordField //Créer un nouvel enregistrement de sortie output = new PhoneBookOutputRecordField("cp037"); //Exécuter l'interaction interaction.execute(ixnSpec, input, output); //Afficher le résultat System.out.println ("Output is: "); System.out.println("\nMessage: " + output.getOut__mesg() + "\nName:" + output.getOut__name1() + " " + output.getOut__name2() + "\nExtension: " + output.getOut__extn() + "\nZipcode: " + output.getOut__zip()); } catch (Exception e) { e.printStackTrace(); } finally { //Fermer l'interaction et la connexion interaction.close(); connection.close(); } }