IIS 8.5: Java und Tomcat

Der IIS bietet selbst keine Möglichkeit um Java-Anwendungen auszuführen. Um eine Java-Serveranwendungen ausführen zu können wird demzufolge ein eigenständiger Servlet-Container benötigt.

Als solcher dient der Tomcat Webserver. Dieser kann so konfiguriert werden, dass er einen anderen Port als der IIS verwendet. Der IIS nimmt weiterhin alle Anfragen entgegen und entscheidet je nach angefragter URL ob er selbst die Antwort erzeugen und zurück schicken kann, oder ob er die Anfrage an den Tomcat weiterleitet. Dazu ist der Apache Tomcat Connector JK erforderlich.

Der folgende Leitfaden bezieht sich auf die Softwareversionen:

  • Windows Server 2012 R2 (64bit)
  • IIS 8.5 (64bit)
  • Tomcat 8.0 (64bit)
  • Apache Tomcat Connector JK 1.2.40 (64bit)

Vorraussetzungen

Der IIS und der Tomcat sind installiert. Standardmäßig sollte der Tomcat auf Port 8080 lauschen und somit dem IIS nicht in die Quere kommen. Falls das nicht der Fall ist, können in der Konfigurationsdatei [Tomcat-Ordner]confserver.xml sämtliche Ports angepasst werden.

Das IIS ISAPI-Filter-Modul installieren

Falls der IIS noch keine Unterstützung für das ISAPI-Filter-Modul bietet, muss dieses noch installiert werden. Falls diese bereits installiert sind, kann der Punkt komplett übersprungen werden.

  1. Den Server-Manager starten
    Servermanager
  2. Rollen und Features hinzufügen auswählen
  3. Seite Vorbereitung: mit Weiter > überspringen
  4. Seite Installationstyp: Rollenbasierte oder featurebasierte Installation auswählen und mit Weiter > zur nächsten Seite
  5. Seite Serverauswahl: den IIS auswählen (wahrscheinlich ist nur einer in der Liste) und mit Weiter > zur nächsten Seite
  6. Seite Serverrollen: unter Webserver (IIS) > Webserver > Anwendungsentwicklung die Punkte ISAPI-Filter und ISAPI-Erweiterungen auswählen
    Serverrollen ISAPI
  7. Alle folgenden Seiten mit Weiter > durchlaufen und die Installation abschließen
  8. Im IIS-Manager steht jetzt  das Element ISAPI-Filter zur Verfügung
    ISAPI

Apache Tomcat Connector JK einrichten

Unter http://tomcat.apache.org/connectors-doc/ kann die aktuelle Version heruntergeladen werden. Bei der Auswahl des Downloads ist es wichtig, darauf zu achten, ob der IIS als 32bit- oder 64bit-Version vorliegt – in der dementsprechenden Version muss der Connector heruntergeladen werden. Des Weiteren ist folgendermaßen vorzugehen:

  1. Anlegen eines Verzeichnisses für den Connector
    Bsp: [Tomcat-Ordner]\connector
  2. Einfügen des Connectors (isapi_redirect.dll)
    Sind mehrere Connectoren erforderlich kann die dll auch umbenannt werden
    Bsp: isapi_redirect_1.dll
  3. Anlegen der Connector-Konfigurationsdatei im Verzeichnis [Tomcat-Ordner]\connector mit dem Namen isapi_redirect_1.properties und dem Inhalt:
    # Konfiguration für den Jakarta ISAPI Redirector
    
    # Der Pfad zur Erweiterung
    # Pfad muss dem virtuellen Verzeichnis im IIS entsprechen
    extension_uri=/tc1/isapi_redirect_tc1.dll
    
    # Pfad zur Log-Datei, hier mit aktuellem Datum im Dateinamen
    log_file=[Tomcat-Ordner]\logsisapi_redirect_%Y-%m-%d.log
    
    # Hiermit wird pro Tag eine neue Log-Datei angelegt
    log_rotationtime=86400
    
    # Log level (debug, info, warn, error oder trace)
    log_level=info
    
    # Pfad zur workers.properties Datei
    worker_file=[Tomcat-Ordner]\connector\workers.properties
    
    # Pfad zur uriworkermap.properties Datei
    worker_mount_file=[Tomcat-Ordner]\connector\uriworkermap.properties

    Wichtig: Der Name entspricht dem Namen der dll, nur mit Dateinamenserweiterung properties

  4. Anlegen der Worker-Konfiguration workers.properties mit dem folgenden Inhalt:
    # Hinzufügen eines neuen workers 
    worker.list=tc1
    
    # Verbinden des Workers mit der Tomcat-Instanz
    worker.tc1.port=8009
    worker.tc1.host=localhost
    worker.tc1.type=ajp13
    worker.tc1.lbfactor=1
    
  5. Anlegen der Weiterleitungsregeln uriworkermap.properties mit dem folgendem Inhalt:
    # Alle Anforderungen der URL examples oder drunter liegender Element sollen
    # an den Tomcat mit Hilfe des Workers tc1 weitergeleitet werden
    /examples|/*=tc1
    

Es gibt noch weitere Konfigurationsmöglichkeiten welche in der Workers-Referenz bzw. in der UriWorkerMap-Referenz beschrieben sind.

IIS einrichten

Jetzt muss der IIS noch so konfiguriert werden, dass er den Connector auch ausführt.

  1. Im IIS-Manager beim Server auf ISAPI-Filter klicken
  2. In der Ansicht einen neuen Filter hinzufügen
    Als Name sollte irgendetwas eindeutiges verwendet werden. Bsp: tc1 (für tomcat1)
    Unter Ausführbare Datei wird die [Tomcat-Ordner]\connector\isapi_redirect_1.dll ausgewählt
  3. Im IIS-Manager beim Server auf ISAPI- und CGI-Einschränkungen klicken
  4. Über Hinzufügen... einen neuen Eintrag hinzufügen
    ISAPI- oder CGI-Pfad ist wieder die [Tomcat-Ordner]\connector\isapi_redirect_1.dllUnter Beschreibung sollte wieder tc1 eingetragen werden
    Der Haken bei Ausführung des Erweiterungspfades zulassen muss gesetzt werden
  5. Unter der gewünschten Webseite (Bsp: Default Web Site) im IIS-Manager ein neues virtuelles Verzeichnis mit Rechtscklick auf die Website > Virtuelles Verzeichnis hinzufügen...
    Alias: tc1
    Physischer Pfad: [Tomcat-Ordner]\connector
  6. Rechtsklick auf tc1 > Berechtigungen bearbeiten > Reiter Sicherheit > Bearbeiten > Hinzufügen und dem Nutzer IUSR die Rechte zum Lesen und Ausführen geben
  7. Im IIS-Manager tc1 auswählen und die Handlerzuordnung öffnen
  8. Den Eintrag ISAPI-dll auswählen und auf rechts unter Aktionen auf Featureberechtigungen bearbeiten... klicken
  9. Die Berechtigungen für Lesen, Skript und Ausführen setzen
  10. Alle Dialoge mit OK schließen und den IIS neustarten

Testen

Zum testen einfach die URL http://[server-name]/examples/jsp/ aufrufen. Die entsprechende Seite sollte genau so angezeigt werden wie im Tomcat direkt.

Hinzufügen

Um weitere Java-Anwendungen über den IIS erreichbar zu machen, müssen diese nur im webapps-Verzeichnis des Tomcats installiert werden und der Pfad in der uriworkermap.properties Datei eingetragen werden. Danach muss der IIS neu gestartet werden.

Fehlerbehandlung

Fehler 500 – Interner Serverfehler

  • Hat die Datei isapi_redirect.properties den gleichen Namen wie die dll?
  • Sind in der Datei isapi_redirect.properties die richtigen Pfade zu den beiden anderen properties aufgeführt?

Fehler 404 – Datei nicht gefunden

  • Kann der Tomcat auf die angeforderte Datei zugreifen?
  • Ist der Pfad in der uriworkermap.properties aufgeführt?
  • Wird in der uriworkermap.properties der in der workers.properties definierte Worker verwendet?

Keine Fehlermeldung, aber

Es wird eine Datei mit unlesbarem Inhalt bei jeder Abfrage zurückgeliefert.

  • Der Inhalt ist aller Wahrscheinlichkeit nach die dll selbst
  • Sind die Rechte zum Ausführen gesetzt?
  • Wurde der IIS neu gestartet?
  • Ggf. versuchen Windows neu zu starten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.