应该有很多朋友遇见过这个问题,我这里只是说出我自己遇见的问题和解决方案,可能并不通用,但是大家可以参考并多次尝试来解决自己的问题。
我的项目A直接部署在ROOT下面,项目myApp部署在webapps下面,看我httpd.conf的配置:
<Directory E:\tomcat6.0\webapps\ROOT\a\>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /myApp "E:\tomcat6.0\webapps\myApp"
<Directory "E:\tomcat6.0\webapps\myApp">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot E:\tomcat6.0\webapps\ROOT\a\1
ServerAdmin test@www.abc.com
ServerName www.yoursitename.net
DirectoryIndex main.htm
JKMount /myApp/* worker1
JkMount /myApp/*.jsp worker1
JkMount /myApp/*.do worker1
</VirtualHost>
配置的默认目录是在ROOT下面的a目录,所以我想要访问myApp时的url为:http://www.yoursitename.net/myApp/index.jsp,所以我才会将
JKMount /myApp/* worker1,JkMount /myApp/*.jsp worker1, JkMount /myApp/*.do worker1配置在虚拟目录里,这样apache遇见这样的请求时会交给tomcat处理,以前试过将这三句放在外面,但是我没成功!
workers.properties配置:
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=127.0.0.1
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
worker.worker1.connect_timeout=8000
worker.worker1.prepost_timeout=8000
worker.worker1.connection_pool_timeout=600
mod_jk.conf的配置:
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /*.jsp worker1
JKMount /servlet/AxisServlet worker1
JKMount /manage worker1
JKMount /*.x worker1
参考博客:http://blog.163.com/koumm@126/blog/static/95403837201082415220142/