Patrick Middleton wrote:
Hi folks,
I'm working with recent builds/installations of
Apache 2.2.22 with mod_jk 1.2.37 on MacOSX 10.4.11/PPC
Apache 2.2.22 with mod_jk 1.2.37 on MacOSX 10.8.2/x86_64
connecting to Tomcat 5.5.7 (from binary distribution) running on MacOSX
10.4.11.
What I am finding is lots of log entries such as this one in
/var/log/apache2/mod_jk.log:
[Thu Nov 29 12:17:14.422 2012] [38496:140733193388032] [warn]
map_uri_to_worker_ext::jk_uri_worker_map.c (1057): Uri * is invalid. Uri
must start with /
corresponding to this one in /var/log/apache2/access_log:
::1 - - [29/Nov/2012:12:17:14 +0000] - - - "OPTIONS * HTTP/1.0" 200 -
"-" "Apache/2.2.22 (Unix) DAV/2 mod_jk/1.2.37 mod_ssl/2.2.22
OpenSSL/0.9.8x (internal dummy connection)"
My understanding is that this is the Apache master instance running as
root is polling its spare/worker processes to check that they're alive
and I have tracked this down to server/mpm_common.c in the Apache 2.2
sources.
I'm not an Apache internals expert. I'm not really even that good at
configuring Apache. I have:
<IfModule jk_module>
JkWorkersFile /etc/apache2/workers.properties
JkShmFile /private/var/run/jk-apache2.shm
JkLogFile /private/var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T %s %r"
JKMount "/TomcatApplications/*" worker1
JkMountCopy All
</IfModule>
so I don't see how the heartbeat request is being processed by the
jk_module handler. Possibly my diligent use of Google to find how to
configure apache 2.2 to stop this has not been diligent enough.
Suggestions for additional Apache configuration directives are welcome.
Would it be reasonable to change the sources for mod_jk to not log a
warning when the URI is * and the method is OPTIONS and the remote
address is localhost?
Hi.
Thanks for the detailed and complete info, it simplifies responses.
I basically agree with you in not understanding why mod_jk, with the single
mapping
> JKMount "/TomcatApplications/*" worker1
would believe that a request "OPTIONS *" applies to it, and would consequently mumble in
the logfile.
I would let the resident mod_jk expert answer that one.
But to avoid the messages in the meantime, you could try the following :
1) comment out the following JkMount and JkMountCopy lines :
> <IfModule jk_module>
> JkWorkersFile /etc/apache2/workers.properties
> JkShmFile /private/var/run/jk-apache2.shm
> JkLogFile /private/var/log/apache2/mod_jk.log
> JkLogLevel info
> JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
> JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
> JkRequestLogFormat "%w %V %T %s %r"
# JKMount "/TomcatApplications/*" worker1
# JkMountCopy All
> </IfModule>
2) add a section to your Apache httpd configuration :
<Location /TomcatApplications/>
<Limit GET POST>
SetHandler jakarta-servlet
SetEnv JK_WORKER_NAME worker1
</Limit>
</Location>
Honestly, I have no idea if a <Limit> section would do the trick here. But you can always
try it.
If it works like I expect, the above means :
- for any request URL which matches ^/TomcatApplications/
- only if the method is GET or POST
- set mod_jk as the Apache response handler
- and set the mod_jk "worker" to worker1
If the method is not GET or POST, do nothing, meaning let the request be served by the
default Apache response handler (which would complain if this was other than OPTIONS,
because it would not find the path on disk).
Reference : http://tomcat.apache.org/connectors-doc/reference/apache.html
Section : Using SetHandler and Environment Variables
and
http://httpd.apache.org/docs/2.2/mod/core.html#limit
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org