Smile 笑容

apache2整合tomcat出现404错误的解决方案

在配置apache2整合tomcat的时候,通常会用到 mod_jk 模块。

在调试初期最容易遇到的问题就是 404错误,让我们无从下手,其实要解决它也就是一句话的事:

1、在 apache的配置文件中, JKMount的时候 使用的是相对路径

2、tomcat在接受到请求的时候也是去相对路径寻找这个请求

3、问题就出在 tomcat安装后 默认一个 root 目录 和 apache2的默认 html目录是不重叠的,所以 tomcat 不可能在异地相同的相对路径下面找到需要的文件。

打个比方

apache在 北京 买了个房子, 房子是 北京路 66号( 即 beijing.jsp)而 tomcat 则是 在上海的北京路 66号, 虽然都是北京路 66号,却并不是同一个地方。

要解决这个问题,你就需要告诉 tomcat 不是上海,是北京市。 那么 指定 ROOT.xml 里的 docbase 就可以解决问题了(写成 apache html目录的绝对路径)。

 

 

在 Debian Lenny 下, 默认支持 OpenJDK到 5.5 版本, 发现最新的 sid 和 test版本 已经支持 6.0了,于是仗着胆修改了 source.list

加入

deb http://ftp.tw.debian.org/debian sid main

这么做是存在风险的,但是却是有效的。通过 apt-get update 之后, 再 apt-get install openjdk-jdk 等命令即可以获得最新版的 OpenJDK等软件。

再次强调,这么做会安装 sid下的新版程序,可能和 lenny版本系统出现冲突等问题,请谨慎考虑,承担由此造成的损失和责任。

 

安装纪要

实际在debian lenny环境下配置这个tomcat的过程很简单也很方便。

第一步是安装JDK6
apt-get install openjdk-6-jre openjdk-6-jdk

第二步是安装tomcat6, 这个安装如前所述 需要 修改 source.list
apt-get install tomcat6 tomcat6-docs tomcat6-examples tomcat6-admin

第三步是安装和配置 mod_jk 参考下面的教程即可成功配置
apt-get install libapache2-mod_jk

第四步是整合Tomcat到apache2环境中
要点是 如上所述 配置 ROOT.xml

debian5:/var/www/jsp# nano /var/lib/tomcat6/conf/Catalina/localhost/ROOT.xml
完整的 ROOT.xml 摘录如下

<Context path="/"
        antiResourceLocking="false"
 docBase="/var/www"
/>

蓝色部分为新增加内容,需要和 apache配置中的 DocumentRoot 相同。

 

笑容在安装和调试 openjdk apache2 tomcat 以及利用 mod_jk 整合 过程中, 参考了如下内容:

  1. Tomcat里antiResourceLocking的作用和引起的一个问题
    http://blog.csdn.net/java2000_net/archive/2009/07/10/4337288.aspx
  2. GeoNetwork opensource Installation on Ubuntu
    http://geonetwork-opensource.org/documentation/how-to/installation-on-ubuntu