Bonjour,
Je désirerais délocaliser ma logique métier sur un serveur distant et l'encapsuler dans des EJBs Session Stateless.
Donc, en gros, j'ai un client d'EJB et mon serveur d'EJB séparés par un réseau local.
Je configure donc mon lookup JNDI de façon à pouvoir invoquer mon EJB:
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,com.ibm.websphere.naming.WsnInitialContextFactory);
env.put(Context.PROVIDER_URL, iiop://remote_host:2809 );
context = new InitialContext(env);
}catch(IOException ex){}
catch(NamingException ne) {}
Jusque là, pas de problème.
Ensuite, j'essaie de récupérer ma Home interface de mon EJB Session Stateless :
try {
Object objref = context.lookup(name);
MyHome myHome = (MyHome) PortableRemoteObject.narrow(objref, MyHome.class);
return myHome;
} catch(NamingException ex) {}
MyEJB anEJB = myHome.create();
// code applicatif utilisant les méthodes métiers de l'EJB (ex : anEJB.doSomeWork(....))
Enfin, c'est le code qui est fourni un peu partout sur le Net. Mes questions sont là:
- qu'est ce que la classe MyHome sur le code ci-dessus ? c'est la home interface de mon EJB distant ? Si oui, cela voudrait dire qu'il faut déclarer l'interface Home de mon EJB du côté client et Pourtant ce code doit se trouver du côté client EJB ? Il faut encore déclarer son interface Home du côté client ?
- Faut il récupérer la home interface et faire un create() dessus côté client ou faire le create() côté serveur puis récupérer juste la remote interface ?
- Serais-je passé à côté d'un pattern qui dédié à l'invocation à distance ? Je ties à préciser que j'utilise les patterns Delegate, Factory et ServiceLocator du côté client-EJB.
Merci de votre aide.
(j'espère avoir été clair dans mes explications )
Message édité par chichos le 30-09-2004 à 16:03:30