====== Usare il provider filesystem di jndi ====== 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 props = new Hashtable(); 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); } }