Java Reference
In-Depth Information
viele Server auch die Möglichkeit, die Jar-Dateien von EJB-Komponenten über eine webba-
sierte Administrationsschnittstelle auf den Server zu laden.
Auch bei EJB kann eine Komponente durch eine andere genutzt werden. Wie schon bei
anderen Komponentensystemen kann dies unter Umstä nden bei der gemeinsamen Nutzung
von Klassen oder Schnittstellen problematisch sein, da jede EJB-Komponente ihr eigenes
Universum bezüglich des Klassenladens hat. Insbesondere, wenn man den Bezug zwischen
EJB-Komponenten über Dependency Injection herstellen möchte, besteht eine Möglichkeit
zur Lösung dieses Problem darin, die Jar-Dateien mehrerer EJB-Komponenten zu einem
„Enterprise Application Project“ in Form einer Ear-Datei zusammenzufassen. Ear steht für
„Enterprise Archive“ und ist wie jede Jar- und War-Datei („Java Archive“ bzw. „Web Archive“)
eine Zip-Datei. Eine Ear-Datei kann beliebig viele Jar-Dateien enthalten. Da Java-EE-Server
nicht nur die Funktionalität eines EJB-Containers, sondern in der Regel immer auch eines
Servlet-Containers bereitstellen, können sich außerdem auch noch beliebig viele War-
Dateien in einer Ear-Datei befi nden. Es ist damit dann zum Beispiel möglich, in einem Serv-
let eine EJB-Komponente zu nutzen, wobei das Servlet die Referenz über Dependency Injec-
tion erhält.
136 Erste EJB-Beispielkomponente
Wenn man eine EJB-Komponente implementiert, will man sie natürlich auch ausprobieren.
Dafür benötigen wir einen Client. Für die erste Beispielkomponente wird auch der Pro-
grammcode eines Clients angegeben. Der Client-Code für die folgenden Beispiele ist sehr
ähnlich und wird in diesem Buch nicht wiedergegeben.
In unserer ersten Beispielkomponente wollen wir das bekannte Zähler-Beispiel durch jede
der drei Session-Bean-Arten Stateful, Stateless und Singleton Bean implementieren und bei
der Benutzung der Beans durch einen Client die Unterschiede zwischen den Bean-Arten
demonstrieren.
1 3 .6 1 Server-Seite
Wie zuvor erläutert wurde, braucht eine „von außerhalb“ nutzbare Bean-Klasse eine mit
@Remote annotierte Schnittstelle. Für alle Bean-Klassen dieses ersten Beispiels benutzen
wir dieselbe Schnittstelle aus Listing 13.1.
Listing 13.1 Counter-Schnittstelle
package javacomp.ejb.counter.server;
import javax.ejb.Remote;
@Remote
public interface Counter
{
 
Search WWH ::




Custom Search