配置 Tomcat 6.0
[原创文章:转载必须声明原始出处:http://sswater.cnblogs.com 。更多原创文章参见作者主页:http://www.regexlab.com/ ]
1. 从 http://tomcat.apache.org 下载 tomcat 6 的 zip 包版本。
2. 解压到 C:\Tomcat6.0 (选取一个简单的目录名,有利于配置)
3. 打开命令提示符 cmd.exe ,进入目录 C:\Tomcat6.0\bin ,进行服务安装。
(已有的 Tomcat 4.0 服务,已占用了 Apache Tomcat 这个 "服务显示名",因此需要修改 service.bat 这个文件,把里面的 "Apache Tomcat" 这个服务显示名改为 "Apache Tomcat 6" 。)
执行安装:
C:\Tomcat6.0\bin> service install
4. 修改 JAVA_HOME 环境变量。“我的电脑”=>“属性”=>“高级”=>“环境变量”。
要求 JAVA_HOME 指向 jdk1.5 或 jdk1.6
5. 修改配置,改变 web 所在目录。打开 conf/server.xml ,在 Host 内添加 Context :
<Context path="" docBase="D:/Inetpub/wwwroot"></Context>
6. 添加数据库连接池。server.xml 中在 Context 内添加 Resource :
<Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="sa" password="ok" driverClassName="sun.jdbc.odbc.JdbcOdbcDriver"
url="jdbc:odbc:DRIVER=SQL Server;UID=user;PWD=test;DATABASE=test_db;SERVER=127.0.0.1" />
(后来发现,用 jdbc.odbc 时,同一个 conn 不能同时创建多个 statement 。需要另一个 jdbc 驱动才可以,driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test_db;" )
WEB-INF/web.xml 中,在 web-app 内添加 resource-ref :
<resource-ref>
<description>Datasource</description>
<res-ref-name>jdbc/testDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
在 jsp 代码中,添加:
<%@page import="javax.naming.*"%>
<%@page import="javax.sql.*"%>
<%@page import="java.sql.*"%>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:/comp/env/jdbc/testDB");
Connection conn = ds.getConnection();
//etc.
conn.close();
%>
7. 与 IIS 集成。
(1) 在 C:\Tomcat6.0 下创建目录 jakarta2 ,将 isapi_redirector2.dll 放入该目录。
(2) 创建文本文件 C:\Tomcat6.0\conf\workers2.properties ,内容为:
[shm]
file=C:/tomcat6.0/logs/jk2.shm
size=1048576
# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:/*.jsp]
[uri:/servlet/*]
worker=ajp13:localhost:8009
(3) 创建注册表文件,内容为:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\2.0]
"workersFile"="C:\\Tomcat6.0\\conf\\workers2.properties"
"extensionUri"="/jakarta2/isapi_redirector2.dll"
"logLevel"="error"
"serverRoot"="C:\\Tomcat6.0\\"
(4) 创建 IIS 虚拟目录: /jakarta2 ,实际绝对目录为 C:\Tomcat6.0\jakarta2
目录权限为:“脚本和可执行文件”
(5) 创建 ISAPI 过滤器。IIS管理中站点属性 => ISAPI 筛选器,添加:
筛选器名称: jakarta2
可执行文件: C:\Tomcat6.0\jakarta2\isapi_redirector2.dll
(重新启动“World Wide Web Publishing”服务后,才能看到效果)
8. 牢记惨痛经验。( ISAPI 往往容易出错,并且不易调试。)
在 IIS 虚拟目录中,要注意开放可执行文件权限。
如果文件格式是 NTFS ,要注意 /jakarta 的实际目录及 /conf 目录的“安全”设置,要让 User 能够“读取、运行、写入”,通常就是 C:\tomcat6.0 的权限 => 替换子文件夹 权限。因为从其他地方复制过来的文件,不知道保留了什么权限。
在 Windows 2003 中,IIS 管理器中专门有个 Web 服务扩展 管理,把 redirector.dll 添加为允许。
装好 tomcat 6 服务之后,采用直接执行 startup.bat 能启动,但开启服务却不能启动。原因在于,使用服务启动时,采用原来的 jdk1.4 ,而直接启动时,采用的是环境变量 JAVA_HOME 里面的 jdk 1.6 。因此,需要使用 tomcat 6 服务管理界面,把 tomcat 6 使用的 jdk 设为 1.6 。
9. Tomcat 6 与 Tomcat 4 在 <%@ include file="inc.jsp" %> 时的区别:
在 tomcat 4 中,被包含的文件的文件编码,以包含它的文件编码为准,换句话说,是按“字节”包含。
在 tomcat 6 中,被包含的文件需要自己指定编码,换句话说,是按“字符”包含。而自己指定编码的
<%@ page pageEncoding="GBK" %> 在 tomcat 4 中会以“多次指定编码”而报错。