Artikelformat

nativer Java Client für GWT-RPC Services

GWT arbeitet auf der Serverseite mit üblichen Java Servlets, die aber über eine spezielle Serialisierung mit Daten vom Browser befüllt bzw. angefragt werden. Möchte man nun die Services von einer Java-Application aus ansprechen, dann kann man auf auf die hier vorgestellten Bibliotheken zurückgreifen.

Die beiden Bibliotheken machen es zum Beispiel sehr leicht Lasttest Generatoren zu entwickeln.

GWT RPC Commlayer

Die erste Bibliothek heißt GWT RPC Commlayer. Die Service Implementierung muss dabei von der Klasse GwtRpcComLayerServlet abgeleitet werden. Diese Änderung ist das einzige Zugeständnis an diese Bibliothek.

Der Java-Client für das GWT Beispiel Projekt sieht in etwa so aus:

URL url = new URL("http://127.0.0.1:8888/commtest/greet");
GwtRpcCommLayerClient client = new GwtRpcCommLayerClient(url);
GreetingService stub = (GreetingService) client.createRemoteServicePojoProxy(GreetingService.class);
String echoResponse = stub.greetServer("hello world");

Die Implementierung ist relativ übersichtlich, könnte aber etwas kompakter sein.

GWT SyncProxy

Als alternative Bibliothek gibt es GWT SyncProxy. Diese Bibliothek ist im Prinzip gleich, unterscheidet sich aber in der Benutzung etwas.

Die Service-Implementierung bleibt bei dieser Bibliothek unangetastet, was in meinen Augen viel sympathischer ist als die Änderung von gwt rpc commlayer.

Der Java Client sieht dann in etwa so aus:

GreetingService rpcService = 
   (GreetingService) SyncProxy.newProxyInstance(GreetingService.class, 
         "http://127.0.0.1:8888/commtest/", "greet");
		
String echoResponse = rpcService.greetServer("hello world"));

Die Implementierung ist sehr kompakt.

Fazit:

Benötigt man einen Java Client für die GWT-RPC Services, so kann man auf die oben genannten Bibliotheken zugreifen . SyncProxy ist mein Favorit, da die Implementierung des Clients sehr kompakt ist und man die Services nicht von einem anderen Klasse ableiten muss. Somit bleibt der Service Code unangetastet.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.