Ich habe einige Probleme, eine Anwendung zu entwickeln, die auf EJB 3-Technologie basiert.Wie teilt man SFSB Facade auf?
Ich möchte ein Facade-Muster in den Session-Beans verwenden, um meinen Client (eine Webanwendung) von meinen Entity Beans zu entkoppeln.
Ich verwende ein SFSB, um die Benutzersitzung zu verwalten. So
Ich habe eine FacadeLoginRemote
Remote-Schnittstelle, die die Methoden zum Client macht doLogin()
, doLogout()
, etc ... Derzeit wird diese SFSB auch andere Methoden wie getCourse(int id)
umfasst, getResource(int id)
. Nicht alle Benutzer können tatsächlich erhalten den Kurs und erhalten Sie die Ressource, so dass die Fassade einige Prüfungen vor der Rückgabe der Werte an den Client durchführen.
Ich möchte die Fassade teilen, setzen die Methoden getCourse()
und getResource()
in eine spezielle Klasse für sie, aber unter der FacadeLoginRemote
die Funktionen der Überprüfung von Benutzerprivilegien.
Wenn ich einige verschiedene SLSBs mache, werde ich sie dem Kunden aussetzen. Somit hätte der Client die Möglichkeit, sich direkt mit ihnen zu verbinden, indem er die Überprüfungen von FacadeLoginRemote
vermeidet.
Bin ich falsch? Gibt es eine Möglichkeit, dies zu tun?
Vielen Dank im Voraus,
Andrea
Ja, Sie haben Recht mit der Web- und Business-Ebene. Sie arbeiten an der gleichen JVM.Ich habe Remote-Schnittstellen verwendet, nur weil ich darüber nachdenke, eine mögliche Desktop- oder mobile Client-Anwendung zu entwickeln. Und so wird die JVM anders sein. Wie Sie bereits erraten haben, habe ich 'doLogin()' implementiert, um einige benutzerdefinierte Auth-Operationen durchzuführen. Mein Ziel war es, diese Auth an die anderen Beans weiterzugeben. Ich werde die EJB-Anmerkungen zur Sicherheit überprüfen. Danke für deine Antwort. – Andrea
Gern geschehen. Beachten Sie auch, dass es sehr einfach ist, sowohl eine Remote- als auch eine lokale Schnittstelle für dieselben Beans bereitzustellen. Verwenden Sie die lokalen Schnittstellen für Code, der in derselben JVM ausgeführt wird, und lassen Sie externen Code die Remote-Schnittstellen verwenden. Um Redundanz zu minimieren, können beide Schnittstellen von einer Basisschnittstellenklasse oder voneinander erben. Die Verwendung lokaler Schnittstellen ist typischerweise auch * viel * effizienter. –