G
Guest
Gast
hallo,
ich hoffe hier kann mir wer helfen.
ich versuche per JNDI ein Object abzusichern.
dafür gibt es 3 möglichkeiten, soviel ich weiß: 1- per serilisation, 2 - per attributes, 3 - per reference.
ich versuche gerade die per reference methode und das funktioniert ganz gut, nur ist mein Objekt sehr simpel gestrickt.
was muss ich tun, damit ich auch komplexere Strukturen speichern kann.
zb in der Person noch eine membervariable zb Person Partner ...
wie funktioniert das, denn ich kann anscheinend nur Strings speichern
ich hoffe hier kann mir wer helfen.
ich versuche per JNDI ein Object abzusichern.
dafür gibt es 3 möglichkeiten, soviel ich weiß: 1- per serilisation, 2 - per attributes, 3 - per reference.
ich versuche gerade die per reference methode und das funktioniert ganz gut, nur ist mein Objekt sehr simpel gestrickt.
was muss ich tun, damit ich auch komplexere Strukturen speichern kann.
zb in der Person noch eine membervariable zb Person Partner ...
wie funktioniert das, denn ich kann anscheinend nur Strings speichern
Code:
import java.util.*;
import javax.naming.*;
public class main {
public static void main(String[] args) {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:/hallo/");
try {
Context ctx = new InitialContext(env);
Person p = new Person("Mustermann");
//ctx.bind("du",p);
ctx.rebind("du",p);
p = null;
p = (Person)ctx.lookup("du");
System.out.println(p);
ctx.close();
} catch (NamingException e) {
System.out.println("Lookup failed: " + e);
}
}
}
public class Person implements Referenceable{
private String name = null;
public Person(String n){
this.name = n;
}
public String toString(){ return name; }
public Reference getReference() throws NamingException{
return new Reference(Person.class.getName(),
new StringRefAddr("person",name),
PersonFactory.class.getName(),
null);
}
}
import javax.naming.spi.*;
public class PersonFactory implements ObjectFactory{
public PersonFactory() {
}
public Object getObjectInstance(Object obj, Name name, Context ctx,
Hashtable env) throws Exception {
if (obj instanceof Reference) {
Reference ref = (Reference)obj;
if (ref.getClassName().equals(Person.class.getName())) {
RefAddr addr = ref.get("person");
if (addr != null) {
return new Person((String)addr.getContent());
}
}
}
return null;
}
}