Re: Newbie mod_jk question - Getting HTTP 404 error for existing servlets-examples directory
K S wrote: Hi, I am a newbie to both Apache and Tomcat. I am using Apache 2.0.55, Tomcat 5.5.25, mod_jk 1.2.25 and Ubuntu ( 2.6.17-10-server) It seemed like I had the complete redirection working at one point, but unfortunately after no apparent change (that I can recollect), things just stopped working. I started troubleshooting by collecting detailed logs both in Apache and Tomcat but the log information hasn't helped me much. So I was wondering if anyone could suggest how I can go about finding what the issue is. My set up involved: 1. mod_jk.conf LoadModule jk_module /YYY/lib/ApacheTomcat/mod_jk.so JkWorkersFile /XXX/apache-tomcat-5.5.25/conf/jk/workers.properties The space in the next line is hopefully not in the original file? JkShmFile /XXX/apache-tomcat-5.5.25 /conf/jk/mod_jk.shm JkLogFile /XXX/apache-tomcat-5.5.25/conf/jk/mod_jk.log JkLogLevel trace JkLogStampFormat [%a %b %d %H:%M:%S %Y] JkRequestLogFormat %w %V %T VirtualHost my.machine.name ServerName my.machine.name JkMount /servlets-examples worker1 JkMount /servlets-examples/* worker1 /VirtualHost 2. workers.properties The next two lines are not used. Remove them. workers.tomcat_home=/XXX/apache-tomcat-5.5.25 workers.java_home=/XXX/Java/jdk1.6.0_03 worker.list=worker1 worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=9009 3. apached.conf - Additions/Changes to the default file (A) Include /XXX/apache-tomcat-5.5.25/conf/jk/mod_jk.conf (B) LogFormat %v %V %h %l %u %t \%r\ %s %b status-%s port-%p filename-%f reqMethod %m \%{Referer}i\ \%{User-Agent}i\ combined LogFormat %v %V %h %l %u %t \%r\ %s %b common LogFormat %v %V %{Referer}i - %U referer LogFormat %v %V %{User-agent}i agent 4. Tomcat server.xml - Additions/Changes to the default (A) Engine name=Catalina defaultHost=bacis.vm.acis.intranet Throw this listener out. It's only used for automatic configuration generation, which is partially broken, and you've got a configuration already. Listener className=org.apache.jk.config.ApacheConfig modJk=/XXX/lib/ApacheTomcat/mod_jk.so jkWorker=worker1 / (B) Host name=my.machine.name appBase=webapps unpackWARs=true autoDeploy=true xmlValidation=false xmlNamespaceAware=false (C) !-- Define a non-SSL HTTP/1.1 Connector on port 8080 -- Connector port=9080 maxHttpHeaderSize=8192 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 connectionTimeout=2 disableUploadTimeout=true / !-- Note : To disable connection timeouts, set connectionTimeout value to 0 -- (D) !-- Define an AJP 1.3 Connector on port 8009 -- Connector port=9009 enableLookups=false redirectPort=8443 protocol=AJP/1.3 / (E) Server port=9005 shutdown=SHUTDOWN Here are the contents of mod_jk.log after I restart both Apache and Tomcat and then make a request through my browser for http://my.machine.name/servlets-examples. This URL used to (when things were working) show me the standard Tomcat page with servlets examples such as HelloWorld AND all the servlets worked. ... For me it looks like something is wrong with the vhost. mod_jk by default doesn't inherit JkMounts between Vhosts. You put your JkMounts into a vhost (that's fine), but the log tells us, that during request processing, no JkMounts were defined. So I guess, that the request didn't get processed by this Vhost. I can see, that the name of the vhost gets logged in the access log, but still something seems to be wrong (maybe you defined another my.machine.name in some other file. You can check, if it's a vhost problem: - put the JkMounts in the global server config and set JkMountCopy On in all VirtualHost blocks. Then it should work again. - add a separate CustomLog (separate file name) in the global server and in each vhost. This way you can easily detect, which vhost handled your request. Put the JkMounts into that vhost and remove the other ones and the JkMountCopy directives. Regards, Rainer [Mon Nov 19 16:15:12 2007] [4075:3080226480] [debug] jk_child_init::mod_jk.c (2692): Initialized mod_jk/1.2.25 [Mon Nov 19 16:15:12 2007] [4075:3080226480] [trace] jk_child_init::mod_jk.c (2693): exit [Mon Nov 19 16:17:01 2007] [4069:3080226480] [trace] map_uri_to_worker::jk_uri_worker_map.c (542): enter [Mon Nov 19 16:17:01 2007] [4069:3080226480] [debug] map_uri_to_worker::jk_uri_worker_map.c (597): Attempting to map URI '/servlets-examples' from 0 maps [Mon Nov 19 16:17:01 2007] [4069:3080226480] [trace] map_uri_to_worker::jk_uri_worker_map.c (645): exit Apache's access.log my.machine.name my.machine.name 10.5.X.X - - [19/Nov/2007:16:17:01 -0500] GET /servlets-examples HTTP/1.1 404 337 status-404 port-80 filename-/var/www/servlets-examples reqMethod GET - Mozilla/5.0 (X11; U; Linux i686; en-US; rv: 1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy) my.machine.name my.machine.name 10.5.X.X - - [19/Nov/2007:16:17:01 -0500] GET /favicon.ico HTTP/1.1 404 331 status-404 port-80
Re: Newbie mod_jk question - Getting HTTP 404 error for existing servlets-examples directory
Thanks a lot Rainer! The problem as you guessed was with the Vhost. After putting the JkMounts in the global server configuration, it worked. I started using the VHost (though now I have realised I don't need them at all since I am not hosting more than one website on a single server) because the automatically generated mod_jk.conf file had the JkMounts within the VHost tags. I have one clarification: (A) Engine name=Catalina defaultHost=bacis.vm.acis.intranet Throw this listener out. It's only used for automatic configuration generation, which is partially broken, and you've got a configuration already. I would prefer to use the automatic configuration since it seems to nicely include all the necessary JkMounts for each webapp in the 'webapps' directory. It saves me the extra step of having to modify the mod_jk.conf file for each new webapp I add. But like I said, the automatically generated mod_jk.conf file puts all the JkMounts in to VirtualHost localhost VirtualHost set of tags. If I comment this out and then restart apache it seems to work fine. Do you have any suggestions on how this can be overcome or would it just be better to avoid this auto generated file (since you say it is partially broken) ? Thanks again! - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Newbie mod_jk question - Getting HTTP 404 error for existing servlets-examples directory
K S wrote: Thanks a lot Rainer! The problem as you guessed was with the Vhost. After putting the JkMounts in the global server configuration, it worked. I started using the VHost (though now I have realised I don't need them at all since I am not hosting more than one website on a single server) because the automatically generated mod_jk.conf file had the JkMounts within the VHost tags. I have one clarification: (A) Engine name=Catalina defaultHost=bacis.vm.acis.intranet Throw this listener out. It's only used for automatic configuration generation, which is partially broken, and you've got a configuration already. I would prefer to use the automatic configuration since it seems to nicely include all the necessary JkMounts for each webapp in the 'webapps' directory. It saves me the extra step of having to modify the mod_jk.conf file for each new webapp I add. But like I said, the automatically generated mod_jk.conf file puts all the JkMounts in to VirtualHost localhost VirtualHost set of tags. If I comment this out and then restart apache it seems to work fine. Do you have any suggestions on how this can be overcome or would it just be better to avoid this auto generated file (since you say it is partially broken) ? Thanks again! I would say, the auto-generated file might give you an easy start for a configuration, but for production purposes you might like to have a look at the connectors docs pages, especially concerning Apache config and workers.properties, to adjust the config to your needs. Regards, Rainer - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Newbie mod_jk question - Getting HTTP 404 error for existing servlets-examples directory
Hi, I am a newbie to both Apache and Tomcat. I am using Apache 2.0.55, Tomcat 5.5.25, mod_jk 1.2.25 and Ubuntu ( 2.6.17-10-server) It seemed like I had the complete redirection working at one point, but unfortunately after no apparent change (that I can recollect), things just stopped working. I started troubleshooting by collecting detailed logs both in Apache and Tomcat but the log information hasn't helped me much. So I was wondering if anyone could suggest how I can go about finding what the issue is. My set up involved: 1. mod_jk.conf LoadModule jk_module /YYY/lib/ApacheTomcat/mod_jk.so JkWorkersFile /XXX/apache-tomcat-5.5.25/conf/jk/workers.properties JkShmFile /XXX/apache-tomcat-5.5.25 /conf/jk/mod_jk.shm JkLogFile /XXX/apache-tomcat-5.5.25/conf/jk/mod_jk.log JkLogLevel trace JkLogStampFormat [%a %b %d %H:%M:%S %Y] JkRequestLogFormat %w %V %T VirtualHost my.machine.name ServerName my.machine.name JkMount /servlets-examples worker1 JkMount /servlets-examples/* worker1 /VirtualHost 2. workers.properties workers.tomcat_home=/XXX/apache-tomcat-5.5.25 workers.java_home=/XXX/Java/jdk1.6.0_03 worker.list=worker1 worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=9009 3. apached.conf - Additions/Changes to the default file (A) Include /XXX/apache-tomcat-5.5.25/conf/jk/mod_jk.conf (B) LogFormat %v %V %h %l %u %t \%r\ %s %b status-%s port-%p filename-%f reqMethod %m \%{Referer}i\ \%{User-Agent}i\ combined LogFormat %v %V %h %l %u %t \%r\ %s %b common LogFormat %v %V %{Referer}i - %U referer LogFormat %v %V %{User-agent}i agent 4. Tomcat server.xml - Additions/Changes to the default (A) Engine name=Catalina defaultHost=bacis.vm.acis.intranet Listener className=org.apache.jk.config.ApacheConfig modJk=/XXX/lib/ApacheTomcat/mod_jk.so jkWorker=worker1 / (B) Host name=my.machine.name appBase=webapps unpackWARs=true autoDeploy=true xmlValidation=false xmlNamespaceAware=false (C) !-- Define a non-SSL HTTP/1.1 Connector on port 8080 -- Connector port=9080 maxHttpHeaderSize=8192 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 connectionTimeout=2 disableUploadTimeout=true / !-- Note : To disable connection timeouts, set connectionTimeout value to 0 -- (D) !-- Define an AJP 1.3 Connector on port 8009 -- Connector port=9009 enableLookups=false redirectPort=8443 protocol=AJP/1.3 / (E) Server port=9005 shutdown=SHUTDOWN Here are the contents of mod_jk.log after I restart both Apache and Tomcat and then make a request through my browser for http://my.machine.name/servlets-examples. This URL used to (when things were working) show me the standard Tomcat page with servlets examples such as HelloWorld AND all the servlets worked. [Mon Nov 19 16:15:12 2007] [4067:3080226480] [debug] open_jklog::mod_jk.c (2652): log time stamp format is '[%a %b %d %H:%M:%S %Y] ' [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_alloc::jk_uri_worker_map.c (182): enter [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_open::jk_uri_worker_map.c (407): enter [Mon Nov 19 16:15:12 2007] [4067:3080226480] [debug] uri_worker_map_open::jk_uri_worker_map.c (423): rule map size is 0 [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_open::jk_uri_worker_map.c (479): exit [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_alloc::jk_uri_worker_map.c (198): exit [Mon Nov 19 16:15:12 2007] [4067:3080226480] [debug] open_jklog::mod_jk.c (2652): log time stamp format is '[%a %b %d %H:%M:%S %Y] ' [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_alloc::jk_uri_worker_map.c (182): enter [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_open::jk_uri_worker_map.c (407): enter [Mon Nov 19 16:15:12 2007] [4067:3080226480] [debug] uri_worker_map_open::jk_uri_worker_map.c (423): rule map size is 0 [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_open::jk_uri_worker_map.c (479): exit [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_alloc::jk_uri_worker_map.c (198): exit [Mon Nov 19 16:15:12 2007] [4067:3080226480] [debug] open_jklog::mod_jk.c (2652): log time stamp format is '[%a %b %d %H:%M:%S %Y] ' [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_alloc::jk_uri_worker_map.c (182): enter [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_open::jk_uri_worker_map.c (407): enter [Mon Nov 19 16:15:12 2007] [4067:3080226480] [debug] uri_worker_map_open::jk_uri_worker_map.c (423): rule map size is 2 [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_add::jk_uri_worker_map.c (315): enter [Mon Nov 19 16:15:12 2007] [4067:3080226480] [debug] uri_worker_map_add::jk_uri_worker_map.c (372): exact rule '/servlets-examples=worker1' source 'JkMount' was added [Mon Nov 19 16:15:12 2007] [4067:3080226480] [trace] uri_worker_map_add::jk_uri_worker_map.c (398): exit [Mon Nov 19 16:15:12