2010-08-14 4 views
11

Ich bin neu in EJB 3 und ziemlich verwirrt mit einigen Zweifeln, die Google nicht mit einer befriedigenden Antwort zur Verfügung gestellt.Verwenden der Client-Jar in EJB 3 und Entwurfsmuster

Ich versuche, ein Framework mit einigen Basisklassen und einigen Hilfsmethoden zu erstellen, die meine anderen Anwendungen verwenden können. Alle Anwendungen müssen auf demselben Server bereitgestellt werden.

Wenn ich versuche, ein neues EJB 3.0-Projekt in Eclipse zu erstellen, fragt es, ob ich auch ein Client-Jar erstellen möchte. Welchen Zweck erfüllt dieses Kundenglas? Mein ejbmodul wird als Teil der EAR-Datei hinzugefügt. Brauche ich wirklich dieses Kundenglas? Muss ich sowohl lokale als auch Remote-Schnittstellen erstellen? Oder nur Remote-Schnittstellen tun?

habe ich beschlossen, alle Schnittstellen in einem Projekt projCommon und die Bohne Definitionen in projApps genannt zu halten. Die Remote-Schnittstellen, die die Bean-Klassen implementieren, befinden sich in projCommon. Also ist projApps abhängig von projCommon.

Ich möchte eine Delegate-Methode verwenden, die in projCommon definiert ist, um die Bean-Klassen aufzurufen. Das bedeutet, dass projCommon auch auf projApps angewiesen ist, rt? Und führen zu einer zirkulären Abhängigkeit.

Wie genau werden EJBs direkt injiziert?

Wäre wirklich hilfreich, wenn Sie meine Zweifel freundlich erklären können.

Antwort

22

Wenn ich versuche, ein neues EJB 3.0-Projekt in Eclipse zu erstellen, fragt es, ob ich auch einen Client jar erstellen möchten. Welchen Zweck erfüllt dieses Client-Glas? ?

Ein EJB-Client-JAR-Datei ist eine optionale JAR-Datei, die alle Klassendateien enthalten kann, die ein Client-Programm die Client-Sicht auf dem Enterprise-Beans verwenden muss, die in der EJB-JAR-Datei enthalten sind. Wenn Sie sich entscheiden, keine Client-JAR-Datei für ein EJB-Modul zu erstellen, alle Client-Interface-Klassen werden in der EJB-JAR-Datei

Mein ejbmodule als Teil der EAR-Datei hinzugefügt wird. Also brauche ich wirklich diese Client-Jar?

Sie brauchen nicht wirklich den EJB Client, es bietet nur eine einfachere Verpackung, um die EJBs von einem Client zu verwenden.

Muss ich sowohl lokale als auch Remote-Schnittstellen erstellen? Oder nur remote Schnittstellen tun?

Wenn alle Ihre EJBs in derselben EAR sind, können Sie lokale Schnittstellen verwenden, wenn Sie keine Remote-Schnittstellen benötigen. Lokale Schnittstellen sind effizienter, die Aufrufe erfolgen über Referenz.
Einige Container (z. B. WebSphere) optimieren dies zur Laufzeit für Sie und rufen bei Bedarf lokale Schnittstellen automatisch auf.

habe ich beschlossen, alle Schnittstellen in einem Projekt zu halten projCommon und die Bohne Definitionen in projApps genannt.Die Remote-Schnittstellen, die die Klassen implementieren, sind in ProjCommon. Also projApps ist abhängig von projCommon.

Ich würde meine Projekte nach funktionalen Bereichen organisiert halten. Führen Sie lokale Anrufe innerhalb der Funktionsbereiche und Remote-Anrufe außerhalb der Funktionsbereiche durch. Dadurch können Sie die auf verschiedenen Servern bereitzustellende Funktionalität später aufteilen, um sie zu skalieren. Es hält auch den Code modularer. Dies vermeidet auch jegliche zirkuläre Abhängigkeiten.

Wie genau werden EJB's direkt injiziert?

Wie es funktioniert ist egal, das wird durch den Container getan. Der springende Punkt von J2EE ist, das Wie zu abstrahieren.

Per http://www.developer.com/print.php/3650661:

EJB 3 Container bieten die Einrichtungen, um verschiedene Arten von Ressourcen in stateless Session Beans zu injizieren. In der Regel erfordern die Geschäftsmethoden in der Session-Bean einen oder mehrere Ressourcentypen, um Benutzeraufgaben auszuführen oder Anforderungen von Clientanwendungen zu verarbeiten. Diese Ressourcen können andere Session-Beans, Datenquellen oder Nachrichtenwarteschlangen sein.

Die Ressourcen, die das Stateless Session Bean zu verwenden versucht, können mithilfe von Anmerkungen oder Deployment-Deskriptoren injiziert werden. Ressourcen können durch Annotation von Instanzvariablen oder Annotation der Setter-Methoden gewonnen werden.

0

Weitere Informationen finden Sie unter here. Ich hoffe das hilft.