Ein Webserver für Android-Smartphones

Liegt auf der Hand: i-jetty

Marc Teufel

Mit i-jetty liegt eine Portierung des populären Webcontainers für Android-Geräte vor. So werden Webanwendungen auf Android-Smartphones lauffähig und sind außerdem in der Lage, auf sämtliche Ressourcen des Android-Betriebssystems zuzugreifen. Der Artikel stellt i-jetty vor und zeigt, was mit der neuen Jetty-Version möglich ist. Er hinterfragt aber auch den Sinn des Webcontainers.

Bei Jetty [1] handelt es sich um einen Webcontainer ähnlich dem Apache Tomcat, der die Servlet-Spezifikation implementiert und gleichzeitig als HTTP-Server fungieren kann. Seit nunmehr fast drei Jahren weilt das Projekt nun bei Eclipse und wird dort stetig weiterentwickelt. Jetty wird in verschiedenen Eclipse-Projekten angewendet. So treibt zum Beispiel ein Jetty-Server die Hilfe beziehungsweise das Info-Center der Eclipse IDE an. Ein wesentlicher Vorteil von Jetty ist seine Fähigkeit, sich sehr einfach einbetten zu lassen und zusammen mit einem Produkt ausgeliefert zu werden. Diese Eigenschaften machen sich neben zahlreichen kommerziellen Produkten auch Open-Source-Projekte zunutze, wie die Liste unter [2] zeigt. Die OSGi-Implementierungen Eclipse Equinox und Apache Felix stellen Jetty schließlich als OSGi Bundle bereit, sodass das Entwickeln von OSGi-basierten Webanwendungen mit Jetty als Webserver möglich ist. Jetty kann also auf vielfältige Weise betrieben und eingesetzt werden. Und seit kurzer Zeit gibt es mit i-jetty eine weitere Möglichkeit, den beliebten Container zu betreiben.

Ein Webserver auf dem Smartphone?

Haben Sie sich schon gefragt, ob es möglich ist, einen Webserver auf dem eigenen Smartphone zu betreiben? Mit i-jetty für Android [3] ist das mittlerweile möglich. Die Jetty-Entwickler, von denen die meisten bei der Firma Webtide angestellt sind, stellen also eine Portierung ihres Servlet-Containers für Android-Smartphones bereit. Damit hat der Android-Benutzer die Möglichkeit, den eigenen Webserver quasi „on the go“ zu betreiben, also eigene Webanwendungen darauf zu installieren und laufen zu lassen. i-jetty lässt sich über den Android Market (Stichwort „ijetty“) sehr einfach installieren. Nach dem Start zeigt er sich auf dem Smartphone, wie es Abbildung 1 zeigt. Über die entsprechenden Knöpfe lässt sich der Server starten, stoppen und konfigurieren. Ist der Server gestartet, erscheint in der Leiste ganz oben ein kleines „iJ“-Symbol. Wird er gestoppt, verschwindet das Icon. Konfigurieren lässt er sich nur, wenn er gestoppt ist. Mit dem Downloadknopf können Sie selbstentwickelte Webanwendungen in den i-jetty-Server laden und bereitstellen. Beachten Sie, dass nach dem Einspielen einer Webanwendung über den Downloadknopf der Server gestoppt und anschließend neu gestartet werden muss. Leider ist hier kein Hot-Deploy-Mechanismus vorhanden. Die Konsolenausgabe im unteren Bereich des Fensters gibt schließlich zusätzliche Statusmeldungen aus. So sieht man beispielsweise in der Konsolenausgabe von Abbildung 1, dass der Webserver auf Port 8080 lauscht und über das Netzwerkinterface rmnet0 auf der IP-Adresse 10.39.246.7 erreichbar ist.

Abb. 1: i-jetty nach der Installation und dem Start als App auf dem Android-Gerät

Wenn Sie jetzt die WLAN-Hotspot-Funktion Ihres Smartphones aktivieren und sich mit dem Android-Gerät verbinden, können Sie direkt über den Aufruf von http://10.39.246.7:8080 die Startseite des i-jetty-Webservers im Browser auf Ihrem PC aufzurufen, wenn er mit dem Android-Gerät verbunden ist. Abbildung 2 zeigt diese Startseite und beweist, dass der i-jetty-Server läuft. Zusätzlich liefert die Seite einen kurzen Überblick über alle installierten Webanwendungen.

Abb. 2: Die Startseite von i-jetty, aufgerufen von einem PC
Zwei Connektors, knappe Konfiguration

i-jetty liefert von Haus aus zwei Connektors mit: einen für HTTP und einen für HTTPS. Der HTTP Connector ist per Default aktiviert. Hier lassen sich lediglich der Port (Default 8080) und das Blocking-Verhalten (Use NIO) konfigurieren. In der Standardeinstellung steht diese Einstellung auf true, das bedeutet, dass der Server mehrere Anfragen gleichzeitig verarbeiten kann und intern mit einem optimierten, nicht blockierenden Threading-Modell arbeitet. Der HTTPS Connector dagegen ist in der Standardeinstellung deaktiviert und muss explizit eingeschaltet werden. Da beide Connektors bei aktiviertem HTTPS gleichzeitig laufen, ist für HTTPS ein separater Port (Default 8443) vorgesehen und konfigurierbar. Auch HTTPS kann man optional ohne Non-Blocking IO (NIO) betreiben. Ob das sinnvoll ist, sei dahingestellt. Die restlichen Einstellungen betreffen die Sicherheit (Passwortschutz).

Installation und Deinstallation von Webanwendungen

Um zu zeigen, was mit i-jetty möglich ist, bieten die Entwickler drei Beispiele: HelloWorld, Chat und natürlich die Konsolenanwendung. HelloWorld ist sicherlich das einfachste Beispiel. Es lässt sich, wie bereits weiter oben beschrieben, über den Knopf DOWNLOAD herunterladen und an einen beliebigen Context Path binden. Wenn Sie also DOWNLOAD gedrückt haben, geben Sie im Feld ENTER URL die Adresse an, von der die war-File mit der Anwendung heruntergeladen werden soll. Im Fall der HelloWorld-Anwendung lautet die Adresse http://i-jetty.googlecode.com/files/hello-3.1.war. Im Feld CONTEXT PATH entscheiden Sie sich, unter welchem Kontext die Anwendung installiert werden soll. Beachten Sie, dass der Kontext immer mit einem Slash (/) beginnen muss! Wollen Sie HelloWorld etwa unter http://10.39.246.7:8080/hello verfügbar machen, dann lautet die Eingabe /hello. Mit DOWNLOAD starten Sie schließlich den Download und die Installation der Webanwendung (Abb. 3). War die Installation erfolgreich, erhalten Sie eine entsprechende Meldung. Jetzt muss der i-jetty-Server noch neu gestartet werden. Dann steht die Anwendung bereit.

Leider gibt es zurzeit keine gute Möglichkeit, eine zuvor installierte Webanwendung direkt über die i-jetty-App wieder zu entfernen. Hierzu benötigen Sie entweder eine Filemanager App direkt auf dem Android-Gerät oder Sie verbinden das Smartphone via USB mit dem PC und löschen die Anwendung direkt. Downloadable Web Apps (wie unser HelloWorld-Beispiel) werden üblicherweise auf der SD Card abgelegt. Hier gibt es einen Ordner Jetty, der wiederum die Unterorder contexts, tmp und webapps enthält. Mit diesen Ordnern verhält es sich analog zum großen Bruder Jetty: Während man im Verzeichnis webapps komplette war-Dateien ablegen kann, bietet das Verzeichnis contexts die optionale Möglichkeit, Webanwendungen über eine XML-Syntax zu konfigurieren und bereitzustellen. Genau das tut die Downloadfunktion von i-jetty: Die war-File wird in den Ordner tmp geladen und anschließend nach webapps entpackt. Danach wird eine XML-Datei mit dem Kontext erzeugt und in den context-Ordner gelegt. Um die Anwendung zu entfernen, ist sie also in den Verzeichnissen contexts und webapps entsprechend zu löschen.

Abb. 3: Eine Webanwendung installieren
Geschrieben von
Marc Teufel
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.