Accès JNDI de JBoss
Pour accéder au composants EJB déployé sous JBoss, voici un exemple de code. Il récupère le ~CorbasManager mais ça marche avec tout les EJB déployé.
// Get initial context of JNDI tree
Hashtable<String, String> w_param = new Hashtable<String, String>();
w_param.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
w_param.put(javax.naming.Context.PROVIDER_URL, "jnp://192.168.168.128:1099/");
javax.naming.Context ctx = new javax.naming.InitialContext(w_param);
// Get advanced pricing EJB home
Object obj = ctx.lookup("cic.CICCorbaManagerEJBHome");
cic.CICCorbaManagerEJBHome w_corbasHome =
(cic.CICCorbaManagerEJBHome)javax.rmi.PortableRemoteObject.narrow(obj,cic.CICCorbaManagerEJBHome.class);
// Create a new advanced pricing session
cic.CICCorbaManagerEJB w_corbasManager = w_corbasHome.create("CORBAS");
System.out.println("Cleanup Status : "+w_corbasManager.getCleanupStatus());
w_corbasManager.clearCache();
System.out.println("Cleanup Status : "+w_corbasManager.getCleanupStatus());
Pour lister les EJB de l’annuaire on peut faire comme ça :
Enumeration<NameClassPair> w_list = ctx.list("");
while (w_list.hasMoreElements()) {
NameClassPair t_class = w_list.nextElement();
System.out.println(t_class.getName());
}
ATTENTION Penser à faire un remove sur l’EJB à la fin pour ne pas générer un aspirateur de connexion, le Corbas étant limité !