Google Sitebricks
Google Sitebricks
Google Sitebricks ist frei und Open Source unter der Apache 2.0 Lizenz verfügbar [1]. Die Umgebungsanforderungen sind relativ einfach, es wird lediglich ein Servlet Container mit Servlet API ab Version 2.3 benötigt. Das im Folgenden beschriebene Beispiel [2] wurde mit einem Jetty 6.1.21 getestet. Google Sitebricks adressiert den Web-Layer einer mehrschichtigen Applikation. Das Framework besteht dabei aus einer Reihe von Annotationen, um RESTful Resources bereitzustellen, sowie einem Template-Ansatz, um diese Ressourcen in altgewohnte HTML-Seiten einzubinden.
Sitebricks arbeitet RESTful
Eine RESTful Ressource wird typischerweise über einen Identifier, eine sogenannte URI, referenziert. Über diese URI können Repräsentationen dieser Ressource in unterschiedlicher Form zwischen Client und Server ausgetauscht werden. Für die Manipulation werden dabei meist die Schnittstellen des HTTP-Protokoll verwendet. In Sitebricks besteht eine solche Ressource aus einer einfachen Java-Klasse. Anhand einer Annotation wird die URI der Ressource definiert. Um die Ressource zu manipulieren, stehen weitere Annotation für HTTP-Methoden zur Verfügung.
public class Guestbook {
private List
private Entry newEntry = new Entry();
@Inject
private EntryDao entryDao;
public Guestbook(EntryDao argEntryDao) {
entryDao = argEntryDao;
}
public Guestbook() {
}
public List
return entries;
}
@Get
public void load() {
entries = entryDao.readAll();
}
@Post
public String save() {
newEntry.setDate(new Date());
Integer id = entryDao.save(newEntry);
return String.format("/sample/guestbook/%1$s", id);
}
}
Das Beispiel zeigt die Klasse Guestbook, die mithilfe von @At als Ressource über die URI "/guestbook" referenziert werden kann. Zusätzlich implementiert die Klasse die HTTP-Methoden POST und GET über die entsprechenden Annotationen. Die @Get annotierte Methode füllt eine Liste mithilfe eines DAOs (Data Access Object). Die Liste wird als Instanzvariable gehalten und nach dem Abarbeiten der Methode load vom Framework über den Getter abgerufen.
Google Sitebricks' Design-Ansatz unterscheidet sich an dieser Stelle klar von anderen Web-Frameworks. Während andere Lösungen meist mit einer Art Modell-Objekt arbeiten, welches mit Domain-Objekten befüllt wird, ist bei Sitebricks die Ressource selbst dieses Modell-Objekt. Alles was über einen Getter abgerufen werden kann, ist auch in der View zugänglich. Dazu später mehr, wenn es um die Repräsentation einer Ressource geht.
Die Klassenmethoden, welche die HTTP-Methoden implementieren, können sowohl einfache Strings zurückliefern, als auch Ressourcen selbst. Strings können dabei auf dynamische URIs verweisen. Im Beispiel wird dies anhand der mit @Post annotierten Methode gezeigt. Das Zurückgeben einer Ressource wird mithilfe des sogenannten Page Chaining realisiert. Page Chaining ist Sitebricks' Implementierung des Post-Redirect-Get Pattern [3]. Ein Beispiel dafür ist die Methode delete in der Klasse GuestbookEntry. Dort wird eine Instanz der Ressource Guestbook zurückgegeben, anstelle eines einfachen Strings. Page Chaining ist leider auf statische Ressourcen limitiert. Dies bedeutet, man kann beispielsweise nicht auf eine dynamisch zusammengebaute URI verweisen. In der Praxis ist es somit nicht wirklich zu gebrauchen, da die meisten Ressourcen in irgendeiner Form dynamisch sind.
public class GuestbookEntry {
private Entry entry;
@Inject
private EntryDao entryDao;
@Get
public void load(@Named("id") String argId) {
entry = entryDao.read(Integer.valueOf(argId));
}
public Entry getEntry() {
return entry;
}
@Post
public Guestbook delete(@Named("id") String argId) {
load(argId);
entryDao.delete(entry);
return new Guestbook(entryDao);
}
}
Als Gast kommentieren:
Gastkommentare werden nach redaktioneller Prüfung freigegeben (bitte Policy beachten).
-
Java Magazin - Die aktuelle Ausgabe
Inhalt, Editorial, Quellcodes und Link-Tipps zum aktuellen Java Magazin -
Archiv
-
Digital lesen
-
Java Magazin Abo
-
Eclipse Magazin - Die aktuelle Ausgabe
Inhalt, Editorial, Quellcodes und Link-Tipps zum aktuellen Eclipse Magazin -
Archiv
-
Digital lesen
-
Eclipse Magazin Abo
-
Business Technology - Die aktuelle Ausgabe
Inhalt, Autorenverzeichnis und Editorial zum aktuellen Business Technology -
Archiv
-
Digital lesen
-
Business Technology Abo

Warenkorb
Login
Registrieren
Kommentare
Ihr Kommentar zum Thema