Java Reference
In-Depth Information
{
public static void main(String[] args) throws Exception
{
Context context = new InitialContext();
Counter counter1 =
(Counter)context.lookup("StatefulCounter");
Counter counter2 =
(Counter)context.lookup("StatefulCounter");
for(int i = 0; i < 10; i++)
{
int newValue1 = counter1.increment();
int newValue2 = counter2.increment();
System.out.println(newValue1 + " " + newValue2);
}
counter1.bye();
counter2.bye();
//System.out.println("reset: value = " + counter1.reset());
}
}
Die Ausgabe des Programms ist nicht besonders spektakulär und wie erwartet. Für jedes
Lookup wird ein neues Objekt der Stateful-Bean-Klasse erzeugt, so dass die beiden Referen-
zen auf unterschiedliche Objekte zeigen. Die Ausgabe ist daher (auch bei mehrmaliger Aus-
führung):
1 1
2 2
3 3
...
10 10
Schaut man auf die Console des Servers, so sieht man, dass beim Starten eines Clients zwei
Objekte erzeugt werden (Ausgabe der mit @PostConstruct annotierten Methode) und am
Ende diese beiden Objekte wieder gelöscht werden (Ausgabe der mit @PreDestroy annotier-
ten Methode). In der auskommentierten Zeile am Ende von main wird nach dem Aufruf der
Methode bye, die mit @Remove annotiert ist, nochmals eine Methode auf dem Bean-Objekt
aufgerufen. Dies führt im Falle einer Stateful Bean zu einer Ausnahme, wie man leicht aus-
probieren kann, wenn man den Kommentar im Client-Code entfernt.
Die sehr einfache Erzeugung eines Context-Objekts im Client, mit dem man Zugriff auf den
Namensdienst des Java-EE-Servers erhält, durch Aufruf des parameterlosen Konstruktors der
Klasse InitialContext funktioniert übrigens dann, wenn man als Server Glassfi sh verwendet
und Client und Server auf demselben Rechner laufen (wenn also der Rechner, auf dem der
Server läu , aus Sicht des Clients localhost ist). Andernfalls muss man die Initialisierung des
Context-Objekts anpassen. Für JBoss 6 muss zum Beispiel die folgende Form der Initialisie-
rung durchgeführt werden, auch wenn Client und Server auf demselben Rechner laufen:
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
properties.put(Context.PROVIDER_URL,
"localhost:1099");
Context context = new InitialContext(properties);
 
Search WWH ::




Custom Search