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