Lentes, Bernd wrote:
Charles Caldarale wrote:
when talking with a web browser directly to tomcat (port 8080), the
web page is shown correctly.
Are you sure the original request on port 80 is actually
making it through httpd all the way to Tomcat? The symptoms
you're reporting are characteristic of a misconfigured httpd
not forwarding anything to Tomcat. Post your mod_jk config
for someone (probably not me) to look at.
Currently i'm logging the whole AJP-stuff between httpd and tomcat (that's a
lot). This shows that httpd forwards the request to tomcat, and tomcat delivers
the response.
Your configuration of mod_jk below looks correct (except a small detail, see
JkMount).
But I must say that it is difficult to believe that the request is actually forwarded to
Tomcat, and that Tomcat then fails to recognise the file as a JSP page, and returns it as
"text/plain" source.
Particularly if, as you said earlier, when you access the same URL on Tomcat directly, via
port 8080, the same document displays correctly.
The <Connector>'s in Tomcat (the one for HTTP port 8080, and the one for AJP on port 8009)
are just interfaces that receive a request in some format, translate it to a common
internal format, and then forward it in that internal format to the internal Tomcat
machinery (which is the same in both cases). So whether a request is originally received
on the HTTP Connector or on the AJP Connector, should not make a difference in terms of
how Tomcat processes the same URL. And the result should be returned the same way in both
cases.
So something in the symptoms you report does not fit.
Can you :
- stop Apache
- clear the mod_jk log
- restart Apache
- then issue just one request to "mouseidgenes" through Apache (port 80)
- then edit the mod_jk log, find the lines specific to that one request,
and paste them here
To explain :
when a module like mod_jk is installed in Apache, then Apache will forward *every* request
to mod_jk. It is mod_jk which then examines the URL, and decides if it wants to handle
this request or not.
If not, it returns a code to Apache saying "I decline the request", and then Apache looks
for another response handler to handle this.(*)
If mod_jk decides to handle the request (because it matches one of the URLs that it has
been asked to handle, via the JkMount directives), /then/ it forwards it to Tomcat, waits
for the Tomcat response, and returns this response to Apache (which returns it to the
browser).
(*) Apache does the same for any other "handlers" that have been installed. Each of them
is called in turn with the same URL. The first one who decides to handle the request wins.
If no handlers decide to process this request (and all return "declined"), then eventually
Apache will process the request with its own default handler. That one finds the
requested file on disk somwhere under the Apache DocumentRoot, and returns it to the
browser with a Content-type that is what the default Apache handler thinks it is.
(in this case, plain text).
So what I suspect, is that when you look at the mod_jk log, you see lines that show that
indeed mod_jk received the request URL from Apache, and is trying to match it to one of
its internally mapped URLs.
But you may be missing the line that says, in the end, that mod_jk could not match the
URL, and is returning a response "declined" to Apache.
My mod_jk.conf:
# Load mod_jk module
# LoadModule jk_module libexec/mod_jk.so
# Declare the module for <IfModule directive> (remove this line on Apache
2.0.x)
# AddModule mod_jk.c
# Where to find workers.properties
# JkWorkersFile /etc/httpd/conf/workers.properties
# Where to put jk shared memory
JkShmFile /var/log/apache2/mod_jk.shm
# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%r %s %w %V"
JKWorkerProperty worker.appl01.type=ajp13
JKWorkerProperty worker.appl01.host=localhost
JKWorkerProperty worker.appl01.port=8009
JKWorkerProperty worker.list=appl01
# Send servlet for context /mouseidgenes to worker named appl01
JkMount /mouseidgenes/* appl01
This will forward a request like "/mouseidgenes/index.jsp", but will not
forward the URL "/mouseidgenes". You may want to add
JkMount /mouseidgenes appl01
# Send JSPs for context /examples to worker named worker1
# JkMount /examples/*.jsp worker1
Bernd
Helmholtz Zentrum München
Deutsches Forschungszentrum für Gesundheit und Umwelt (GmbH)
Ingolstädter Landstr. 1
85764 Neuherberg
www.helmholtz-muenchen.de
Aufsichtsratsvorsitzende: MinDir´in Bärbel Brumme-Bothe
Geschäftsführer: Prof. Dr. Günther Wess und Dr. Nikolaus Blum
Registergericht: Amtsgericht München HRB 6466
USt-IdNr: DE 129521671
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org