<param-value>warning</param-value>
</init-param>
<init-param>
<param-name>compiler</param-name>
<param-value>jikes</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
当然,给出的编译器必须已经安装在你的系统中,并且classpath可能需要设置,那处决于你选择的是何种编译器。
10.限制特定主机访问(restricting access to specific hosts)
有时,你可能想限制对tomcat web应用的访问,比如,你希望只有你指定的主机或ip地址可以访问你的应用。这样一来,就只有那些指定的的客户端可以访问服务的内容了。为了实现这种效果,tomcat提供了两个参数供你配置:remotehostvalve 和remoteaddrvalve。
通过配置这两个参数,可以让你过滤来自请求的主机或ip地址,并允许或拒绝哪些主机/ip。与之类似的,在apache的httpd文件里有对每个目录的允许/拒绝指定。
例如你可以把admin web application设置成只允许本地访问,设置如下:
<context path="/path/to/secret_files" ...>
<valve classname="org.apache.catalina.valves.remoteaddrvalve"
allow="127.0.0.1" deny=""/>
</context>
如果没有给出允许主机的指定,那么与拒绝主机匹配的主机就会被拒绝,除此之外的都是允许的。与之类似,如果没有给出拒绝主机的指定,那么与允许主机匹配的主机就会被允许,除此之外的都是拒绝的。
随着java的流行,其在web上的应用也越来越广,tomcat作为一个开源的servlet容器,应用前景越来越广,本文将向你讲述tomcat的一些知识。
一:简介
tomcat是jakarta项目中的一个重要的子项目,其被javaworld杂志的编辑选为2001年度最具创新的java产品(most innovative java product),同时它又是sun公司官方推荐的servlet和jsp容器(具体可以见http://java.sun.com/products/jsp/tomcat/),因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。
二:安装及配置
tomcat最新版本为4.0.1,这个版本用了一个新的servlet容器catalina,完整的实现了servlet2.3和jsp1.2规范。注意安装之前你的系统必须安装了jdk1.2以上版本。
(一):安装
1:windows平台
从tomcat网站下载jakarta-tomcat-4.0.1.exe,按照一般的windows程序安装步骤即可安装好tomcat,安装时它会自动寻找你的jdk和jre的位置。
2:linux平台
下载jakarta-tomcat-4.0.1.tar.gz,将其解压到一个目录。
(二):配置
运行tomcat需要设置java_home变量
set java_home=c:/jdk (win98,在msdos方式下使用,或者放入autoexec.bat中)
export java_home=/usr/local/jdk (linux下使用,放到/etc/bashrc或者/etc/profile中)
|
(三):运行
设置完毕后就可以运行tomcat服务器了,进入tomcat的bin目录,win98下用startup启动tomcat,linux下用startup.sh,相应的关闭tomcat的命令为shutdown和shutdown.sh。
启动后可以在浏览器中输入http://localhost:8080/测试,由于tomcat本身具有web服务器的功能,因此我们不必安装apache,当然其也可以与apache集成到一起,下面会介绍。
下面你可以测试其自带的jsp和servlet示例。
三:应用
(一):目录结构
tomcat的目录结构如下:
| 目录名 |
简介 |
| bin |
存放启动和关闭tomcat脚本 |
| conf |
包含不同的配置文件,server.xml(tomcat的主要配置文件)和web.xml |
| work |
存放jsp编译后产生的class文件 |
| webapp |
存放应用程序示例,以后你要部署的应用程序也要放到此目录 |
| logs |
存放日志文件 |
| lib/japser/common |
这三个目录主要存放tomcat所需的jar文件 |
(二):server.xml配置简介
下面我们将讲述这个文件中的基本配置信息,更具体的配置信息见tomcat的文档
| 元素名 |
属性 |
解释 |
| server |
port |
指定一个端口,这个端口负责监听关闭tomcat的请求 |
| shutdown |
指定向端口发送的命令字符串 |
| service |
name |
指定service的名字 |
connector (表示客户端和service之间的连接) |
port |
指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 |
| minprocessors |
服务器启动时创建的处理请求的线程数 |
| maxprocessors |
最大可以创建的处理请求的线程数 |
| enablelookups |
如果为true,则可以通过调用request.getremotehost()进行dns查询来得到远程客户端的实际主机名,若为false则不进行dns查询,而是返回其ip地址 |
| redirectport |
指定服务器正在处理http请求时收到了一个ssl传输请求后重定向的端口号 |
| acceptcount |
指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理 |
| connectiontimeout |
指定超时的时间数(以毫秒为单位) |
engine (表示指定service中的请求处理机,接收和处理来自connector的请求) |
defaulthost |
指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的 |
context (表示一个web应用程序,通常为war文件,关于war的具体信息见servlet规范) |
docbase |
应用程序的路径或者是war文件存放的路径 |
| path |
表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/**** |
| reloadable |
这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/web-inf/lib 和/web-inf/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序 |
|
host (表示一个虚拟主机) |
name |
指定主机名 |
| appbase |
应用程序基本目录,即存放应用程序的目录 |
| unpackwars |
如果为true,则tomcat会自动将war文件解压,否则不解压,直接从war文件中运行应用程序 |
|
logger (表示日志,调试和错误信息) |
classname |
指定logger使用的类名,此类必须实现org.apache.catalina.logger 接口 |
| prefix |
指定log文件的前缀 |
| suffix |
指定log文件的后缀 |
| timestamp |
如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt |
|
realm (表示存放用户名,密码及role的数据库) |
classname |
指定realm使用的类名,此类必须实现org.apache.catalina.realm接口 |
|
valve (功能与logger差不多,其prefix和suffix属性解释和logger 中的一样) |
classname |
指定valve使用的类名,如用org.apache.catalina.valves.accesslogvalve类可以记录应用程序的访问信息 |
| directory |
指定log文件存放的位置 |
| pattern |
有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,http响应代码,发送的字节数。combined方式比common方式记录的值更多 |
注意:1:经过我测试,我设置context 的path="",reloadable=true,然后放一个war文件到webapps目录,结果tomcat不能检测出此文件(重起tomcat可以),而把此文件解压,则tomcat会自动检测出这个新的应用程序。如果不能自动检测war文件,我们可以利用下面管理中讲的方法来部署应用程序。
2:默认的server.xml中,realm元素只设置了一个classname属性,但此文件中也包含几个通过jdbc连接到数据库进行验证的示例(被注释掉了),通过realm元素我们可以实现容器安全管理(container managed security)。
3:还有一些元素我们没有介绍,如parameter,loader,你可以通过tomcat的文档获取这些元素的信息。
(三):管理
1:配置
在进行具体的管理之前,我们先给tomcat添加一个用户,使这个用户有权限来进行管理。
打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:
<user name="zf" password="zf" roles="standard,manager"/>
|
注意:这一行的最后部分一定是/>,tomcat的文档掉了/符号,如果没有/符号的话,tomcat重起时将无法访问应用程序。通过logs/catalina.out文件你可以看到这个错误的详细信息。
然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。
2:应用程序列表
在浏览器中输入http://localhost:8080/manager/list,浏览器将会显示如下的信息:
ok - listed applications for virtual host localhost
/ex:running:1
/examples:running:1
/webdav:running:0
/tomcat-docs:running:0
/manager:running:0
/:running:0
|
面的信息分别为应用程序的路径,当前状态(running 或者stopped),与这个程序相连的session数。
3:重新装载应用程序
在浏览器中输入 http://localhost:8080/manager/reload?path=/examples,浏览器显示如下:
ok - reloaded application at context path /examples
|
表示example应用程序装载成功,如果我们将server.xml的context元素的reloadable属性设为true(见上面表格),则没必要利用这种方式重新装载应用程序,因为tomcat会自动装载。
4:显示session信息
在浏览器中输入http://localhost:8080/manager/sessions?path=/examples,浏览器显示如下:
ok - session information for application at context path /examples default maximum session inactive interval 30 minutes
|