Ulrichs Werkbank

Statische Inhalte via HTTP mit Tomcat

Tomcat ist eigentlich ein Applikationsserver. Dennoch muss man nicht auf Flexibilität verzichten oder zu anderen Produkten greifen, wenn man neben Webapplikationen auch statische Inhalte bereitstellen möchte, im Gegenteil. Tomcat eigenet sich sehr gut und einfach für die Ausgabe von z.B. Video- und Musikinhalten.

Standardkonfiguration

Üblicherweise ist der ganze Inhalt, der über einen Tomcat-Server abrufbar ist, in einem bestimmten Verzeichnis des Rechners hinterlegt. Mit [CatalinaBase]/conf/server.xml regelt eine einzelne Konfigurationsdatei, welchen Inhalt der Server verfügbar macht. Der Standardeintrag dort lautet

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        .. andere Konfigurationseinträge ..
      </Host>

Im Attribut appBase ist ein relativer Verweis auf das Verzeichnis webapps eingetragen. Ist Tomcat z.B. im Verzeichnis /opt/tomcat7 des Rechners installiert, meint dieser Eintrag das Verzeichnis /opt/tomcat7/webapps. Alles was sich dort befindet, wird vom Server auf Anfrage herausgegeben.

Inhalte hinzufügen

Wird nun am Server eine externe Festplatte mit Musik- und Videodaten angeschlossen, die der Server etwa über den Pfad /media/extplatte einbindet, können die Media-Dateien der externen Platte direkt zum Streaming über HTTP genutzt werden. Es muss nur der folgenden Eintrag im Host-Element der Datei server.xml hinzugefügt werden.

<Context path="/av" docBase="/media/extplatte"></Context>

Alles, was unter /media/extplatte zu finden ist, wird anschließend über den URL http://localhost/av aufrufbar. Findet sich vielleicht eine Musikdatei

/media/extplatte/musik/D/dideldumdei.mp3

auf der externen Platte, kann die Datei per Audiostreaming abgespielt werden, wenn man den URL

http://localhost/av/musik/D/dideldumdei.mp3

aufruft. Die Auslieferung erfolgt von Tomcat automatisch per Streaming über HTTP, indem die vorgenannte Konfiguration umgesetzt wird. Wie ein anderer Tipp beschreibt, ist es dabei sehr einfach, eine externe Festplatte so anzuschliessen, dass sie im Standby wartet, bis ein Aufruf von Mediendaten erfolgt und sich anschließend wieder in den Ruhezustand versetzt.

Mit und ohne Neustart

Tomcat muss neu gestartet werden damit ein Eintrag wie der oben beschriebene in der Datei server.xml wirksam wird. Anstelle eines Eintrags in der Datei server.xml kann ein Ablageort mit Inhalten auch ohne Neustart von Tomcat eingebunden werden. Hierzu wird im laufenden Betrieb einfach eine Datei in das Verzeichnis [CatalinaBase]/conf/Catalina/localhost gelegt.

Um etwa die oben beschriebenen Konfiguration auf diese Weise herzustellen, würde man im Verzeichnis [CatalinaBase]/conf/Catalina/localhost eine Datei namens av.xml erstellen. Der Name der Datei ohne die Dateierweiterung .xml bezeichnet dabei den Teil des URL, unter dem die Inhalte aufrufbar sein sollen. Die Datei muss folgenden Inhalt haben

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/media/extplatte" />

Sowie diese Datei am angegebenen Ort gespeichert wird, liefert Tomcat Inhalte aus dem in docBase angegebenen Verzeichnis ganz ohne Neustart per HTTP aus.

Fazit

Mit einem einfachen Eintrag in der Konfiguration lassen sich mit Tomcat beliebige statische Inhalte via HTTP bereitstellen. Ganz unabhängig von ihrem Typ lassen sich so z.B. HTML, XML oder Textinhalte ebenso wiedergeben wie Bilder, Musik oder Videos. Keine umständliche oder schwierige Programmierung, einfach die Funktion einschalten und der Streamingserver ist in Betrieb.

Die passende Bedienoberfläche kann dann ebenso einfach hinzugefügt werden, wenn man eine fertige Webanwendung wie das Mediacenter auf Tomcat installiert.