Tomcat als Server
Willemers Informatik-Ecke
Tomcat ist ein Application-Server, der gern als Basis für die Entwicklung von Servlets und Java Server Pages verwendet wird. Der Server lauscht standardmäßig an Port 8080 und reagiert auf das HTTP-Protokoll. Die Nachrichten werden an die von ihm betreuten Servlets durchgereicht. Diese überschreiben dann die GET- oder POST-Ereignisse und können so dynamische Websites generieren.

Als Plattform wird in diesem Beispiel Linux verwendet.

Tomcat als Server aufsetzen

Tomcat wird von den Linux-Distributionen als Installationspaket vorgehalten und muss nur installiert werden. Der Name der Pakete enthält immer die aktuelle Versionsnummer. tomcat7 steht also für die Version 7 von Tomcat.

Es empfielt sich, neben dem eigentlichen Serverpaket auch das Administrationspaket tomcat7-admin zu installieren. Es bietet eine Verwaltungsmöglichkeit über den Browser.

Um auf einem Debian-, Ubuntu- oder Linux-Mint-Rechner einen Tomcat-Server zu installieren, reicht also der folgende Befehl.

apt-get install tomcat7 tomcat7-admin
Zum Testen kann ein Browser gestartet werden, der als Adresse den Hostnamen oder dessen IP-Adresse, gefolgt von :8080 für den Port enthält. Wird der Test auf dem gleichen PC durchgeführt, auf dem der Server installiert wird, wäre das also http://localhost:8080.

Es erscheint eine Website, die mit den Worten "It works!" beginnt. Weiter unten ist ein Link auf die manager webapp mit der Adresse hostname:8080/manager/html.

Benutzer und Passwort

Beim Starten der Manager Webapp fragt Tomcat nach Benutzerkennung und Passwort. Standardmäßig gibt es keines, sondern muss explizit in der Datei /etc/tomcat7/tomcat-users.xml eingetragen werden. Am Ende der Datei steht unter der Rubrik tomcat-users einige Beispieleinträge, die allerdings mit <!-- und --> auskommentiert sind.

Ein Beispieleintrag, der auch für die Verwendung der Webapp verwendet werden kann, würde beispielsweise so aussehen:

<tomcat-users>
<!--
  <user username="tomcat" password="tomcat" roles="tomcat"/>
-->
  <user username="tomadmin" password="geheim" roles="tomcat,manager-gui,admin-gui"/>
</tomcat-users>
Der Eintrag für tomcat ist auskommentiert, der für tomadmin gilt. Durch den Eintrag manager-gui kann der Benutzer den Deploy-Manager verwalten, durch den Eintrag admin-gui darf er die virtuellen Hosts verwalten.

Nach der Änderung muss die Konfiguration neu geladen werden. Ein Neustart von Tomcat funktioniert auf jeden Fall.

/etc/init.d/tomcat7 restart
Um eine WAR-Datei durch den Tomcat-Server zu deployen, wird sie in das Verzeichnis /var/lib/tomcat7/webapps geschoben.

Tomcat-Download für Windows

Von der Website Apache Tomcat die neueste Tomcat-Version für den Download anklicken. Für Windows gibt es einen Installer als exe.

Nach dem Start zeigt er die Standard-Ports an:

Im nächsten Dialog wird die JRE angefragt. Hier kann auf JDK 10 umgeschaltet werden.

Im nächsten Dialog wird der Installationspfad vorgeschlagen: C:\Program Files\Apache Software Foundation\Tomcat 9.0

Installation und Vorbereitungen von Tomcat für Eclipse

  1. Installation von Tomcat aus dem Repository.
    apt-get install tomcat8
    
  2. Eintrag des Benutzers (hier arnold) in die Tomcat-Group:
    adduser arnold tomcat8
    
  3. Stoppe den Tomcat-Service
    /usr/share/tomcat8/bin/shutdown.sh
    
  4. Es muss verhindert werden, dass Tomcat bei jedem Systemstart mitstartet.
    update-rc.d tomcat8 disable
    
Es gibt zwei Orte, an denen Tomcat residiert. Unter /usr/share/tomcat8 liegen vor allem die Teile, die nicht verändert werden sollten und unter /var/lib/tomcat8 liegen nach Konvention die veränderlichen Daten von Tomcat.

Eclipse ist damit allerdings nicht vollständig zufrieden. Es nörgelt bei der Ansteuerung des Servers hin und wieder, dass es die Tomcat-Version nicht erkennt. Das sollen die folgenden symbolischen Links geraderichten.

cd /usr/share/tomcat8
ln -s /var/lib/tomcat8/conf conf
ln -s /var/log/tomcat8 log
chmod -R 777 /usr/share/tomcat8/conf
ln -s /var/lib/tomcat8/webapps webapps
ln -s /var/lib/tomcat8/work work

Eintrag des Tomcat als Eclipse-Server

Nun wird Eclipse gestartet, um Tomcat zu integrieren.
  1. Über das Menü wird folgender Punkt aufgerufen: File|New|Other.
  2. Im Dialog unter Server den Punkt Server anklicken, dann Next.
  3. Unter Apache finden sich die verschiedenen Tomcat-Versionen, Sie wählen Version 8.
    Achten Sie darauf, dass auch ein Server name auftaucht.

    Als Tomcat Installation directory: muss /usr/share/tomcat8 eingetragen werden, also das Verzeichnis, in dem Tomcat installiert wurde.

Falls bis dahin etwas nicht funktioniert, kann das Zusammenspiel mit Tomcat mit Window|Preferences folgendermaßen geprüft werden:

Einstellen der Katzensymbole in der Symbolleiste
  1. Aus dem Menü anklicken Window | Preferences. Es erscheint ein Dialog.
  2. Auf der linken Seite erscheint Tomcat.
  3. Wird dies angeklickt, erscheint auf der rechten Seite, die Tomcat-Version.
  4. Darunter muss das Tomcat Home auf /usr/share/tomcat8 stehen.
Nun müsste das Katzensymbol zum Starten von tomcat führen.

Erstellung eines JEE-Projekts

  1. Das Projekt wird über das Menü angelegt: File | New | Project.
  2. Im Dialog findet man unter dem Punkt Web das Dynamic Web Project. Mit Next geht es zur nächsten Dialogseite.
  3. Projektname kann beispielsweise DynWebProj sein. Als Target Runtime wird Apache Tomcat v8.0 verwendet. Nach dem Next-Klicken erscheint auf der letzten Seite Generate web.xml deployment descriptor. Den kann man anhaken.
    Sollte an dieser Stelle der Server Name leer bleiben und auch nicht beschreibbar sein, muss folgender Workaround verwendet werden:
    1. Eclipse beenden.
    2. Auf der Konsole ins Arbeitsverzeichnis wechseln, beispielsweise:
      cd ~/workspace
      cd .metadata/.plugins/org.eclipse.core.runtime/.settings
      rm org.eclipse.wst.server.core.prefs
      rm org.eclipse.jst.server.tomcat.core.prefs
      
    3. Eclipse wieder starten.
Im Projekt wird ein Servlet erstellt.
  1. Das Projekt rechts anklicken: New | Other | Web | Servlet.
  2. Der Name des Servlets wird angegeben. Er ist auch für die URL wichtig, mit der das Servlet gerufen wird.
    http://hostname:8080/WebProjektName/ServletName
    
    Falls Finish nicht möglich, ist der Server Tomcat noch nicht eingerichtet.
  3. Eclipse erzeugt einen Quellcode für das Servlet. In der Methoe doGet wird folgende Anpassung vorgenommen:
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().println("<h1>Hallo</h1>");
    }
    
  4. Den Server Tomcat im Eclipse starten.
  5. Die oben angegebene URL in einem Browser eingeben. Nun sollte das Wort Hallo in großen Buchstaben erscheinen.

Weitere Hilfestellungen finden sich unter: http://stackoverflow.com/questions/14791843/eclipse-add-tomcat-7-blank-server-name

Java-Versionskonflikte

Tomcat bestimmt die verwendete Java-Version bereits in der /etc/init.d-Startupdatei.

Ist die Java-Version, mit der ein WAR-Datei erzeugt wurde, neuer als die Version, die Tomcat verwendet, kommt es zu einem Fehler: Unsupported major.minor version 52.0 (Java8 gegen Java7).

Deploying

WAR-Dateien werden im Verzeichnis /var/lib/tomcat8/webapps abgelegt. Beim nächsten Neustart von Tomcat werden sie automatisch gestartet.

Dabei entpackt Tomcat die WAR-Datei. Darum muss bei einem Wechsel der JAR-Datei auch das entpackte Verzeichnis gelöscht werden. Ansonsten zeigt der Wechsel keine Wirkung.