Java Reference
In-Depth Information
des Dienstes weiter, den sich der Broker beim Aufruf der Methode forwardRe-
quest() gemerkt hatte.
Ein Broker kommuniziert nicht direkt mit Client und Server, son-
dern nur indirekt über die jeweiligen Proxys. Die Aufgabe der
Proxys ist es, einen Methodenaufruf zu serialisieren bzw. zu de-
serialisieren und auf dem umgekehrten Weg das Ergebnis des
Methodenaufrufs zu serialisieren bzw. zu deserialisieren.
Hierfür sind in beiden Proxy-Klassen die Methoden packData() und unpackData()
vorgesehen - packData() zum Serialisieren und unpackData() zum Deserialisie-
ren.
Wie in Bild 5-24 zu sehen ist, implementiert die Klasse Client-side Proxy das
Interface IService . Dies entspricht dem Entwurfsmuster Proxy (siehe Kapitel 4.8).
Ein Objekt der Klasse Client-side Proxy spielt dem Client gegenüber die Rolle eines
Stellvertreters des Servers. Der Client ruft also die Methode callService() des
Client-side Proxys genauso auf, wie er es bei einem direkten Aufruf des Servers auch
tun würde. Der Client-side Proxy verpackt jedoch den Aufruf in eine Nachricht und
schickt sie dem Broker, der die Nachricht weiterleitet. Erhält der Broker eine Antwort-
nachricht zu dem Dienstaufruf, dann ruft er die Methode returnResponse() des
Client-side Proxys auf. Der Client-side Proxy deserialisiert die Nachricht und gibt sie
an den Client als Ergebnis des ursprünglichen Dienstaufrufs durch den Client zurück.
Auf der Serverseite ist die Klasse Server-side Proxy zu sehen. Der Name der
Klasse ist etwas irreführend, denn bei dieser Klasse handelt es sich nicht um einen
Proxy im Sinne des Proxy-Musters. Die Namensgebung des Server-side Proxy rührt
daher, dass ein Objekt der Klasse Server-side Proxy in gewisser Weise der Stell-
vertreter des Clients auf der Seite des Servers ist. Ein Server-side Proxy erhält vom
Broker die Nachricht mit einem Dienstaufruf (Methode handleRequest() ). Der Ser-
ver-side Proxy entpackt diese Nachricht, interpretiert sie und ruft die Dienstmethode -
im Beispiel die Methode callService() - des Servers auf. Der Server-Side Proxy
erhält das Ergebnis des Methodenaufrufs, packt das Ergebnis in eine Nachricht und
schickt diese an den Broker mittels der Methode forwardResponse() . Für den Ser-
ver macht es keinen Unterschied, ob die Methode callService() vom Client oder
vom Server-side Proxy aufgerufen wurde.
Wenn die Ausführung einer Dienstmethode durch den Server mit einer Exception be-
endet wird, dann müssen entsprechende Vorkehrungen in den Proxys getroffen
werden: der Server-side Proxy muss die Exception fangen und das Exception-Objekt
in eine Nachricht serialisieren. Der Client-side Proxy muss die Exception-Nachricht de-
serialisieren und die Exception werfen, sodass der Client die Exception erhält.
Das Muster lässt viele Fragen offen, die erst durch eine Implementierung des Broker-
Musters geklärt und beantwortet werden. Die Behandlung des Broker-Musters in die-
sem Buch kann auch nicht soweit ins Detail gehen, dass damit ein Broker problemlos
implementiert werden könnte. In diesem Buch sollen nur die Grundzüge des Musters
Search WWH ::




Custom Search