venerdì 20 gennaio 2012

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<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);
 }
}

Nessun commento:

Posta un commento