Advanced   Java   Services
Connecting Apache 2.0.39 and Tomcat4.0.4 with mod_jk to run Servlets and JavaServerPages
Back Next Up Home
Wie der Indianer den Kater zum Schnurren bringt

I  Download der Dateien


1)  Das Hilfstool Ant (die Ameise)


Die Version 1.4.1 steht unter

http://ant.apache.org/old-releases/v1.4.1/

Die Version 1.5.2 steht unter

http://ant.apache.org/old-releases/v1.5.2/

Die aktuelle Version 1.5.3 findet sich unter

http://ant.apache.org/bindownload.cgi


2)  jakarta-tomcat-connectors


Das Schema der Speicherung der connectors ist analog zu dem der entsprechenden Tomcat-Versionen, man muß nur das Verzeichnis bin durch das Verzeichnis src ersetzen.

Ältere connectors findet man unter

http://jakarta.apache.org/builds/jakarta-tomcat-4.0/archives/

Dort sucht man sich die gewünschte Version, wechselt also in ein Verzeichnis v4.x.x und dort wiederum ins Verzeichnis src

Die aktuellen Versionen findet man unter

http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/

Die aktuelle Version ist zur Zeit 4.1.24, dann gehts wieder ins src-Verzeichnis

http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.24/src

jakarta-tomcat-connectors-4.1.24-src.tar.gz 19-Mar-2003 1.7M GZIP compressed file

Hinweis

connector und Apache passen nicht immer zusammen. So benötigte etwa die Version Apache 2.0.39 einen connector der Version 4.0.2-01. Diese Installation wird hier beschrieben.

II  Installation (connecting Apache 2.0.39 and Tomcat 4.0.4)


1)  Apache 2.0.39


Die Installation von Apache 2.0.39 ist eigentlich problemlos, nur sollte man den Verzeichnisvorschlag Program Files/Apache 2 bzw. Programme/Apache 2 nicht akzeptieren.

Die geplante Zusammenarbeit zwischen Apache2 und Tomcat wird nicht funktionieren, wenn der Verzeichnispfad Leerzeichen enthält. Außerdem sollte man einen Webserver nicht einfach unter Programme installieren. Er verdient ein eigenes Verzeichnis. Zur Installation unter NT oder 2000 braucht man Administratorrechte.

Sehr brauchbar als Pfad ist etwa

c:/Apache/Apache2

Nach der Installation:

Mit einem Browser testen : http://127.0.0.1 sollte die Startseite des Apache bringen

Den Apache Monitor ausprobieren und einmal beenden und wieder starten.

Umgebungsvariable setzen. In diesem Fall APACHE_HOME = c:/Apache/Apache2

Das Rootverzeichnis ist für HTML-Dokumente ist %APACHE_HOME%\htdocs

Die Konfigurierungsdatei httpd.conf (inzwischen nur noch eine) liegt in %APACHE_HOME%\conf
(Wir werden sie noch verändern müssen.)

Das Modulverzeichnis ist %APACHE_HOME%\modules
(In dieses Verzeichnis müssen wir später die Datei mod_jk.dll legen.)


2)  Tomcat 4.0.4


Die Installation von Tomcat 4.0.4 ist zunächst problemlos. Als Verzeichnis wählt man nun

c:/Apache/Tomcat4 (siehe Bemerkung zur Apache Installation)

Nach der Installation:

Mit einem Browser testen : http://127.0.0.1:8080 sollte die Startseite von Tomcat bringen

Umgebungsvariable setzen : TOMCAT_HOME = c:/Apache/Tomcat4

Das Rootverzeichnis für HTML-Dokumente ist   %TOMCAT_HOME%\webapps\ROOT\

Die Konfigurierungsdatei  server.xml  liegt in   %TOMCAT_HOME%\conf
(Wir werden sie noch verändern müssen.)

Die Servlet *.class Dateien (und meist auch die zugehörigen Quellcodedateien) liegen in

%TOMCAT_HOME%\webapps\examples\web-inf\classes



3)  Servlet API 2.3 und Java class-files


servlet-2_3-fcs-docs.zip :

Die Datei in ein (im Prinzip) beliebiges Verzeichnis entpacken. Danach ist die Doku über

meinVerzeichnis\index.html zu erreichen.

Schöner ist es natürlich, wenn man die JDK1.3.1-Dokumentation um das Servlet-API ergänzt, dann kann man in einem Browserfenster die gesamte Doku durchblättern. Dazu braucht man nur HTML-Grundkenntnisse.

servlet-2_3-fcs-classfiles.zip

Eine Kopie der Datei umbenennen in servlet-2_3-fcs-classfiles.jar und in das Verzeichnis

%JAVA_HOME%\jre\lib\ext

legen. Damit ist servlet-2_3-fcs-classfiles.jar ein Java-Archiv geworden. Wenn dieses im vorgenannten Verzeichnis liegt, sind die enthaltenen Klassen über normale import Anweisungen ansprechbar.


4)  Das Hilfstool Ant (die Ameise)


Die gepackte Datei entpackt sich in ein Unterverzeichnis jakarta-ant-1.4.1.

Vorschlag:

Dieses Verzeichnis umbenennen in Ant1.4.1 und als Unterverzeichnis von Apache anlegen

c:\Apache\Ant1.4.1

Umgebungsvariable setzen :  ANT_HOME = c:\Apache\Ant1.4.1


5)  jakarta-tomcat-connectors


Die Datei jakarta-tomcat-connectors-4.0.2-01-src.zip entpackt sich in ein Verzeichnis
jakarta-tomcat-connectors-4.0.2-01-src, das u.a. ein Unterverzeichnis jk enthält.

Dieses Verzeichnis enthält die Dateien build.properties.sample und build.properties
Die Datei build.properties löschen oder umbenennen in build.properties.old. Sie wird
nicht gebraucht. Eine Kopie der Datei build.properties.sample umbenennen in build.properties
Die so entstandene Datei build.properties editieren:

Die folgenden Zeilen entsprechend der gewählten Verzeichnisse anpassen:

tomcat40.home=c:/Apache/Tomcat4
apache2.home=c:/Apache/Apache2
apr.include=${apache2.home}/include
apr.lib=${apache2.home}/lib
so.debug=true
so.optimize=false
so.profile=false

Datei speichern.

per Konsolfenster in das Verzeichnis

jakarta-tomcat-connectors-4.0.2-01-src\jk

wechseln und die Java-Archive aufbauen und installieren:

ant

Sollte viele Meldungen bringen und mit BUILD SUCCESFUL enden

ant install

Sollte nach einigen Meldungen mit BUILD SUCCESFUL enden.


6)  mod_jk.dll


Die Datei  mod_jk.dll  in das Verzeichnis  %APACHE_HOME%\modules legen.


III  Konfiguration


1)  Tomcat 4.0.4


a)  Die Datei  workers.properties  anlegen


Im Verzeichnis  %TOMCAT_HOME%\conf  die beiden Verzeichnisse   jk  und  auto  anlegen.
Im Verzeichnis  %TOMCAT_HOME%\conf\jk  die Datei  workers.properties   wie folgt anlegen :

# ----------------------------------------- begin workers.properties -----------------------------------------
# This file provides jk derived plugins with the needed information to connect to the different
# tomcat workers.
# As a general note, the characters $( and ) are used internally to define macros. Do not use them #in your own configuration!!!
# Whenever you see a set of lines such as:
# x=value
# y=$(x)\something
# the final value for y will be value\something
#
# When you are done updating workers.tomcat_home, workers.java_home and ps
# you should have 3 workers configured:
#
# - An ajp13 worker that connects to localhost:8009
# - A jni inprocess worker.
# - A load balancer worker

workers.tomcat_home=c:/Apache/Tomcat4
workers.java_home=c:/jdk1.3.1

# You should configure your environment slash... ps=\ on NT and / on UNIX  
ps=\

# -------------------------- DEFAULT worket list --------------------------
# The workers that your plugins should create and work with Add 'inprocess' if you want JNI #connector

worker.list=ajp13
#worker.list=ajp13, ajp14

#------ DEFAULT ajp12 WORKER DEFINITION ------------------------------
# Defining a worker named ajp12 and of type ajp12
# Note that the name and the type do not have to match.
#worker.ajp12.port=8007
#worker.ajp12.host=localhost
#worker.ajp12.type=ajp12
# Specifies the load balance factor when used with a load balancing worker.
# Note: lbfactor must be > 0 Low lbfactor means less work done by the worker.
#worker.ajp12.lbfactor=1

#------ DEFAULT ajp13 WORKER DEFINITION ------------------------------
# Defining a worker named ajp13 and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

# Specifies the load balance factor when used with a load balancing worker.
# Note: lbfactor must be > 0 Low lbfactor means less work done by the worker.

worker.ajp13.lbfactor=1

#worker.ajp14.port=8010
#worker.ajp14.host=localhost
#worker.ajp14.type=ajp14
#worker.ajp14.secretkey=secret
#worker.ajp14.credentials=myveryrandomentropy
#worker.ajp14.lbfactor=1

#------ DEFAULT LOAD BALANCER WORKER DEFINITION ----------------------  # The loadbalancer (type lb) workers perform wighted round-robin load balancing with sticky
#sessions. Note: If a worker dies, the load balancer will check its state once in a while.
# Until then all work is redirected to peer workers.

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13

#------ DEFAULT JNI WORKER DEFINITION---------------------------------
# Defining a worker named inprocess and of type jni
# Note that the name and the type do not have to match.

worker.inprocess.type=jni

#------ CLASSPATH DEFINITION -----------------------------------------
# Additional class path components.

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar

# Setting the command line for tomcat. Note: The cmd_line string may not contain spaces.

worker.inprocess.cmd_line=start

# Not needed, but can be customized.
#worker.inprocess.cmd_line=-config
#worker.inprocess.cmd_line=$(workers.tomcat_home)$(ps)conf$(ps)server.xml
#worker.inprocess.cmd_line=-home
#worker.inprocess.cmd_line=$(workers.tomcat_home)
# This is for Java2 / Windows

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll

worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
# ----------------------------------------- end workers.properties -----------------------------------------

Es ist ganz lehrreich die Kommentarzeilen # zu lesen, hier nochmal die nackte Datei ohne Kommentare zum Kopieren:

# ----------------------------------------- begin workers.properties ----------------------------------------- workers.tomcat_home=c:/Apache/Tomcat4
workers.java_home=c:/jdk1.3.1
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
worker.inprocess.type=jni

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
# ----------------------------------------- end workers.properties -----------------------------------------


b)  Die Datei  %TOMCAT%\conf\server.xml  editieren


i)  nach  <Server port="8005" shutdown="SHUTDOWN" debug="0"> (etwa in Zeile 13) folgendes ergänzen

<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"
  modJk="c:/Apache/Apache2/modules/mod_jk.dll"
  jkDebug="info"
  workersConfig="c:/Apache/Tomcat4/conf/jk/workers.properties"
  jkLog="c:/Apache/Tomcat4/logs/mod_jk.log"/>

ii)  nach der Zeile  <Service name="Tomcat-Standalone">  (ca. Zeile 30) folgendes ergänzen, falls nicht schon vorhanden

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
  port="8009" minProcessors="5" maxProcessors="75"
  acceptCount="10" debug="0"/>

iii)  nach der Zeile <Host name="localhost" debug="0" appBase="webapps" ...>  (ca. Zeile 178) folgendes ergänzen

<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" />

iv)  Tomcat erneut starten. Wenn alles klappt, existiert im Verzeichnis

%TOMCAT_HOME%\conf\auto eine Datei mod_jk.conf.

(Es hilft nichts, diese Datei zu editieren, sie wird bei jedem Start von Tomcat neu angelegt.)


2)  Apache 2.0.39


Die Datei  %APACHE_HOME%\conf\httpd.conf  editieren:

Es gibt zwei Möglichkeiten:

a)  Ans Ende der Datei die folgende Include-Anweisung :

Include c:/Apache/Tomcat4/conf/auto/mod_jk.conf

b)  Die Anweisungen von  mod_jk.conf  direkt in   httpd.conf  angeben (flexibler !)

Ans Ende der LoadModule Abteilung folgendes ergänzen :

<IfModule !mod_jk.c>
LoadModule jk_module "c:/Apache/Apache2/modules/mod_jk.dll
</IfModule>

Am Ende der Datei folgendes ergänzen

JkWorkersFile "c:/Apache/Tomcat4/conf/jk/workers.properties"
JkLogFile "c:/Apache/Tomcat4/logs/mod_jk.log"

JkLogLevel info

<VirtualHost localhost>
JkMount /examples ajp13
JkMount /examples/* ajp13
JkMount /examples/*.jsp ajp13

#JkMount /jk ajp13
#JkMount /jk/* ajp13

#JkMount /manager ajp13
#JkMount /manager/* ajp13
</VirtualHost>
top Back Next Up Home