Erklärung (EJB3)

Germu

Mitglied
Hallo,

mach gerade eine Doku zu einer Anwendung. Darin sind folgende Zeilen die ich nicht Erklären kann. Kann mir da evtl. jemand helfen?

Code:
Context jndiContext = getInitialContext();
Object ref = jndiContext.lookup("AuftkdlsBean/remote");
AuftkdlsRemote dao = (AuftkdlsRemote)
PortableRemoteObject.narrow(ref, AuftkdlsRemote.class);

AuftkdlsRemote ist das Interface der Session Bean Klasse AuftkdlsBean.

würd mich freuen wen mir das wer erklären könnte.

grüsse
Germu
 
Also meine Ausflüge zu EJB sind jetzt auch schon eine weile zurück aber ich möchte es mal versuchen.

Der Vorteil von EJB ist die Fähigkeit als verteiltes System zu agieren, soll heisen: deine Geschäftsobjekte (Daten = in der Datenbank) können auf einem Server liegen (bei Firmen häufig besondern stark gesichert) und die Präsentation, sprich die Webseiten auf einem anderen Server (Webserver, gut für EJB nennt sich das ganze dann Applicationserver).

Damit nun deine Controller (servlets auf dem, ich nenns jetzt der Einfachheit halber einfach so, Webserver) auf die Geschäftsobjekte zugreifen können müssen sie wissen wo sich diese befinden. Dazu befragen sie den Namensdienst(ich hoffe das ist eine korrekte übersetzung) = JNDI Context.

Java:
Context jndiContext = getInitialContext();
Object ref = jndiContext.lookup("AuftkdlsBean/remote");
Hier wird der Namendienst geholt und dann nach dem Objekt AuftkdlsBean/remote befragt. Wenn dieses vorhanden ist wird eine Referenz auf dieses zurückgegeben (So viel ich weis müsste es ein Interface sein)

Java:
AuftkdlsRemote dao = (AuftkdlsRemote)PortableRemoteObject.narrow(ref, AuftkdlsRemote.class);
dao = Data Access Object, denn du möchtest ja mit Daten (zur Erinnerung = Geschäftsobjekt) arbeiten.

Die Methode narrow von PortableRemoteObject liefert dir dann das Objekt mit dem du arbeiten kannst (müsste über IIOP-Protokoll laufen). Und du musst immer als zweiten Paramater die Klasse (inklusive .class) übergeben in welche du Casten willst (in diesem Fall AuftkdlsRemote - im übrigen keine besonders sprechende Bezeichnung einer Klasse). Eigentlich ist die Methode narrow nix weiter wie ein etwas umständlicher Cast. Aber da die Informationen zu Klasse "entfernt" liegen gehts halt nicht anders
 
Zuletzt bearbeitet:
Zurück