Manuel d'intégration des applications > ResourceAdapter > ResourceAdapter

ResourceAdapter

ResourceAdapter vous permet d'utiliser l'interface d'application d'Enterprise JavaBeans (EJB). En raison de restrictions techniques, il n'est pas possible d'utiliser directement l'interface d'application à partir d'un EJB. ResourceAdapter ne fonctionne pas dans le conteneur d'Enterprise JavaBean et n'est donc pas lié à ces restrictions.

L'utilisation d'ResourceAdapter diffère de l'utilisation de l'interface d'application sur seulement deux points :

Toutes les autres classes sont utilisées comme lors de l'accès direct à l'interface d'application.

Etablissement de la connexion

Le Serveur J2EE gère un pool de connexions dans Java Connector Architecture (JCA). L'EJB doit, si besoin, lui demander une connexion. Le Serveur J2EE peut soit utiliser une connexion adaptée à partir du pool ou, à partir d'ResourceAdapter, en créer une nouvelle qu'il place dans le pool après utilisation.

Lors de l'établissement de la connexion à partir de l'interface d'application, l'ordinateur et le numéro de port d'un processus de communication sont nécessaires.

Connection uc4 = Connection.open("PC01",2080);

Lors de l'établissement de la connexion à partir d'ResourceAdapter, les deux paramètres font partie de la configuration. Vous obtenez ainsi une instance déjà configurée de ConnectionFactory à partir d'un lookup JNDI. Aucune connexion au processus de communication ne doit encore exister à ce moment-là.

Context initctx = new InitialContext();
ConnectionFactory factory = (ConnectionFactory) initctx.lookup("java:comp/env/eis/UC4");

Identification

Il existe deux types d'identification dans la JCA :

  1. Component managed sign on
    EJB indique les données d'identification.
  2. Container managed sign on
    Le Serveur J2EE indique les données d'identification. L'EJB n'a besoin d'aucune donnée d'accès comme un nom d'utilisateur ou un mot de passe.

Les données d'identification doivent être indiquées lors de l'établissement de la connexion à partir de l'interface d'application. La méthode isLoginSuccessful vous permet de demander si l'identification a réussi.

CreateSession login = uc4.login(98,"MEIER»,"AE","pass",'D');
if (!login.isLoginSuccessful()) {
...
}

Lors de l'établissement de la connexion à partir d'ResourceAdapter, utilisez la méthode getConnection d'une factory fournie par un lookup JNDI pour exécuter une connexion TCP/IP et une identification. Il existe les variantes suivantes :

AdapterConnection uc4 = factory.getConnection();

Le Serveur, le port, le Client, le département et la langue sont utilisés depuis la configuration d'ResourceAdapter. Le Serveur J2EE indique le nom d'utilisateur et le mot de passe avec lesquels vous vous êtes connecté au Serveur J2EE (Single Sign-On).

AdapterConnection uc4 = factory.getConnection(98, "DUPONT", "AE", "pass", 'D')

Pour cette variante, toutes les données d'identification sont indiquées dans l'EJB. Elles sont prioritaires par rapport à la configuration d'ResourceAdapter. Si vous n'indiquez pas un ou plusieurs paramètres, la valeur correspondante de la configuration sera utilisée. Si l'identification n'a pas pu être effectuée, une ResourceException, dont le texte décrit l'erreur en détail, est déclenchée.

AdapterConnection uc4 = factory.getConnection(98, "AE", 'D')

Seuls le Client, le département et la langue doivent être indiqués dans l'EJB. Le nom d'utilisateur et le mot de passe sont fournis comme dans la variante 1 du Serveur J2EE.

Utilisation

A part pour l'établissement de la connexion, l'utilisation des classes Java de l'interface d'application est la même que si vous utilisiez directement l'interface d'application. Voici un exemple simple qui exécute un objet du nom de GS.JOUR dans le système AE.

Context initctx = new InitialContext();
ConnectionFactory factory = (ConnectionFactory) initctx.lookup("java:comp/env/eis/UC4");
AdapterConnection uc4 = factory.getConnection();

ExecuteObject execute = new ExecuteObject(new UC4ObjectName("MAWI.TAG"));
uc4.sendRequestAndWait(execute);
...
uc4.close();

 

Rubriques connexes :