The usage of a Logging-Service in Tapestry is quite easy. You just have to use the @Inject Annotation in your classes.

import org.slf4j.Logger;
@Inject
private Logger logger;

A little bit more complicated is the usage in a Tapestry-Service. Here an @Inject Annotation will fail, so you would have to get an instance for your logger from another source. One possibility would be to use a build-method in your Module class. But then, you would have to distribute such method for each service which should use a logger.

Tapestry helps you here and can contribute the needed Logger instance if you insert a constructor method to your service:

import org.slf4j.Logger;

private final Logger logger;

public MyServiceImpl(final Logger _logger){
    this.logger = _logger;
    this.logger.debug("Successfully initialized MyServiceImpl);
}

Your Service will now be initialized with a working instance of the Logger-class.

Zu Weihnachten standen mal wieder ein Paar Bücher über diverse Themen der Informatik auf der Wunschliste. Dabei hat mich ein Buch besonders begeistert:

Tapestry 5: Die Entwicklung von Webanwendungen mit Leichtigkeit!

Mitte letzten Jahres hatte ich angefangen, mich mit dem Web-Framework Tapestry zu beschäftigen und war sehr schnell davon begeistert. Für mich als Programmierer, der mit HTML und PHP recht wenig am Hut hat, ist der Einstieg sehr einfach gewesen.

Zu dem Zeitpunkt gab es leider noch kein empfehlenswertes Buch und auch keine ausreichende Dokumentation zum Framework. Deswegen musste ich mir viele Informationen aus allerlei Quellen (Mailing-Listen, Foren, …) zusammensuchen. Das Problem hat sich Ende letzten Jahres aber zum Glück geändert, denn zu dem Zeitpunkt ist das oben genannte Buch erschienen.

In dem Buch erklärt Igor Drobiazko, der selbst ein aktiver Entwickler des Frameworks ist, fast alle Funktionen, die das Tapestry bietet. Besonders spannend fand ich das letzte Kapitel, in dem auf sehr tief gehende Möglichkeiten, dass Framework anzupassen, eingegangen wird.

Amazon-Link zum Buch

Falls einer der Blog-Leser sich für das Buch interessiert, würde ich mich sehr über sein Feedback dazu freuen!

Ich hatte mir noch ein gebrauchtes Exemplar eines anderen Buchs über Tapestry bei ebay gekauft, davon war ich aber leider sehr enttäuscht, da es nur um die Grundfunktionen ging und für fortgeschrittene Entwickler uninteressant war.

For nearly every web-application you need a database to store your information. Usually you’d use a relational database like Postgresql or MySQL and a mapper like Hibernate to access it in your code. And here comes the problem:

Googles doesn’t offer you a relational database but their own database-system called BigTable which you can’t access with the usual Hibernate-Mapping. And one more thing: Google doesn’t call it a database but a datastore icon wink Using the GAE datastore

In this example I’d like to show you, how to save, get, update and delete an object.

Den Rest des Beitrags lesen »

After deploying the first web-app to GAE, we now want to try to run a tapestry based application.

One problem I faced, resulted from google’s JRE Class whitelist, which lists all classes, you can use in your application. The current stable release of Tapestry uses a blacklisted XML Parser.

Therefore you have two possibilities:

  • Replace the XML-Parser
  • or just use Tapestry 5.2

I decided to update my downloaded Tapestry Libs to 5.2.

Create a project

First we have to create a new Tapestry-app with Maven. I used the integrated support of Netbeans to achieve this. In apache’s maven repository you can find a quickstart-app for Tapestry 5.2, which is ideal for testing purpose.

Now you only have to add a appengine-web.xml file and that’s it…

Mein eigentliches Anliegen für den Einsatz der App-Engine ist, dass ich einen Web-Server einsparen möchte. Deswegen sollte natürlich auch eine Tapestry-Anwendung in der GAE laufen.

Leider gibt es in der aktuellen Tapestry Version 5.1.0.5 noch einige Bugs, die den Einsatz verhindern. Theoretisch sollte aber die Version 5.2, welche aktuell noch im Entwicklungsstadium ist, jedoch laufen.

Das Vorgehen, um eine Tapestry Anwendung in die GAE zu laden ist wie bereits beschrieben recht einfach.

Erstellen des Projektes

Am einfachsten generiert man eine Tapestry-Anwendung mittels Maven. Ich nutze hierzu die in Netbeans integrierte Unterstützung. Im Repository gibt es eine Quickstart-Anwendung für Tapestry 5.2, welche für die Testzwecke ideal ist.

Nach dem erzeugen der Anwendung legt man nun wieder eine appengine-web.xml Datei an und schon kann man die Anwendung hochladen.