sepan
Grünschnabel
Hallo,
ich habe folgende Frage.
Ich habe ein Stateful Session Bean (Parent), welches beim Aufruf einer Methode z.B. createChild() auf dem Server eine Instanz eines weiteren Stateful Session Beans erzeugt (Child). Diese Instanz soll dem Client zurückgegeben werden, damit dieser die Methoden direkt auf dem Child-Objekt aufrufen kann.
D.h. die Instanzierung des Child-Objects erfolgt nicht vom Client, sondern am Server, der Client soll jedoch das Objekt nutzen können.
So stell ich mir das vor:
Am Client:
Kann sowas überhaupt funktionieren?
ich habe folgende Frage.
Ich habe ein Stateful Session Bean (Parent), welches beim Aufruf einer Methode z.B. createChild() auf dem Server eine Instanz eines weiteren Stateful Session Beans erzeugt (Child). Diese Instanz soll dem Client zurückgegeben werden, damit dieser die Methoden direkt auf dem Child-Objekt aufrufen kann.
D.h. die Instanzierung des Child-Objects erfolgt nicht vom Client, sondern am Server, der Client soll jedoch das Objekt nutzen können.
So stell ich mir das vor:
Code:
@Remote
public interface Parent {
void setTitle(String title);
Child createChild(String name);
void deleteChild(Child child);
}
@Remote
public interface Child {
void setName(String name);
void setAge(int age);
// usw.
}
@Stateful
public class ParentImpl implements Parent, Serializable {
private String title;
private List<Child> children = new ArrayList<Child>();
public void setTitle(String title) {
this.title=title;
}
public Child createChild(String name) {
Child c = new ChildImpl();
c.setName(name);
children.add(c);
return c;
}
public void deleteChild(Child c) {
children.remove(c);
}
}
@Stateful
public class ChildImpl implements Child, Serializable {
private String name;
private int age;
public void setName(String name) {
this.name=name;
}
public void setAge(int age) {
this.age=age;
}
}
Am Client:
Code:
Hashtable props = new Hashtable();
props.put(InitialContext.PROVIDER_URL, "jnp://localhost:1099");
try {
InitialContext ctx = new InitialContext(props);
Parent p = (Parent)ctx.lookup("Parent/remote");
p.setTitle("...");
Child c = p.createChild("Child 1"); // <- hier
c.setAge(11);
...
} catch (Exception ex) {
ex.printStackTrace();
}
Kann sowas überhaupt funktionieren?