nota: questo codice è instabile (alfa) … da notare la necessità di creare le varie directory dell'albero jndi. Nell'esempio viene creata solo la base ma nel caso di alberi più complessi tutte le sottocartelel dovono essere create; chiaramente sto indagando su come fare per ovviare al problema …
package test.jndi; import java.io.File; import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.Reference; import javax.naming.StringRefAddr; import test.jndi.mystuff.ClasseInutileFactory; import junit.framework.TestCase; public class SimpleJndi extends TestCase { private static final String JDBC_PIPPO = "data/inutile"; private static final String PIPPO = "pippo"; static Hashtable<String,String> props = new Hashtable<String,String>(); static String dirname = "/tmp/"; static { props.put("java.naming.factory.initial", "com.sun.jndi.fscontext.RefFSContextFactory"); props.put("java.naming.provider.url", "file://" + dirname); new File(dirname).mkdirs(); // la directory deve esistere } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } public void testFactory() throws Exception{ InitialContext ctx = new InitialContext(props); Reference ref = new Reference(ClasseInutile.class.getName(), ClasseInutileFactory.class.getName(), null); ref.add(new StringRefAddr("name", "pippoName")); ctx.rebind(PIPPO, ref); Context ic2 = new InitialContext(props); ClasseInutile ci = (ClasseInutile)ic2.lookup(PIPPO); System.out.println(ci); ci = (ClasseInutile)ic2.lookup(PIPPO); System.out.println(ci); } public void aatestSimple() throws Exception { Context ctx = new InitialContext(props); ClasseInutile c = new ClasseInutile(); c.setName(String.valueOf(Math.random())); ctx.rebind(PIPPO,new Reference(c.getClass().getName())); ClasseInutile cu = (ClasseInutile)ctx.lookup(PIPPO); assertEquals(cu,c); } }