灿烂的阳光,苦涩的生活,认真做,你能行!

tomcat配置方法 共有0条回复

上一篇 / 下一篇  2008-12-17 15:12:22 / 个人分类:服务器

一、tomcat 的 context元素配置

如果将做好的web程序再tomcat总发布,那我们必须要了解Tomcat 体系结构中的六个主要概念:Server Service Engine Host Connector Context ,其中我认为context是使用最频繁的元素我们初学者首先要了解的。

Context表示在虚拟主机中运行的web应用程序。一个虚拟主机中能够运行多个Context,它们通过各自的Context Path进行相互区分。如果Context Path为"",那么该web应用为该虚拟主机的默认的web应用。实际上context作用和在iis中配置的虚拟目录一样,只不过微软东西做的有界面,而我们需要手工配置,但是如果将manager应用启动后我们也可以在界面下配置。

context怎么配置呢,目前可以通过四种方式将Context加入Host:

1、$CATALINA_HOME/conf/context.xml,其中Context元素中的信息会被所有web应用程序加载

2、$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default,其中Context元素中的信息会被hostname主机下的所有web应用程序加载

3、$CATALINA_HOME/conf/[enginename]/[hostname]/目录中所有以.xml为扩展名的文件,其中Context元素中的信息会被hostname主机下的所有web应用程序加载

4、如果通过上面的步骤没有找到,那么最后要从web应用程序的/meta-INF/context.xml目录中查找

tomcat 与 java Web 开发技术详解》中讲到配置context元素的方法(第16页),但是这个方法目前在tomcat6中是不推荐使用的,甚至在tomcat6的使用说明中都不这么写了,所以大家不要按照书上的方法设置了。

tomcat6 具有 Automatic Application Deployment 功能,所以一般情况下你只要设置正确 那么在浏览器中敲入:

http://127.0.0.1:8080/examples/ 就可以看到tomcat自带的例子程序,如果你有新开发的web应用并且是按照tomcat的标准的目录结构,

那么不需要任何配置,只要把发布的文件夹考到webapp下就可以了。打开“Automatic Application Deployment 功能”的参数为

使用Host的标准实现,同时deployonstartup属性值为true(这是默认值)。

自动部署功能已经够用了,后面会详细降到自动部署的细节。

现在对上述的前三种方法做一个说明,第四种没什么可说的:

1、第一种方法,《tomcat 与 java Web 开发技术详解》(第16页)中讲到配置context元素,可以在/conf/server.xml 中的 元素中 加入 这种方法现在已经不推荐使用了,同时这个方法演变为在$CATALINA_HOME/conf/context.xml 文件中加入context配置

2。第二、三种方法 区别不大,但是用的人不多,最典型的就是Netbeans6 绑定的tomcat 就是用这种方式部署应用的,如果安装了Netbeans的网友可以到C:\Documents and Settings\用户名\.netbeans\6.0\apache-tomcat-6.0.14_base\conf\Catalina\localhost 看到manager.xml 及root.xml 这些xml中的context元素的 path 参数 指定的是实际的web应用的程序所在的目录,netbeans都用的是绝对路径。

二 、自动部署 (Automatic Application Deployment)的细节。

如果使用Host的标准实现,同时deployonstartup属性值为true(这是默认值),那么Catalina在首次启动时会自动完成下面的工作

$CATALINA_HOME/conf/[engine_name]/[host_name]目录下的所有xml文件都被假定含有元素。

appbase目录下的所有没有展开的war文件(没有展开的意思是没有和war文件名不包括.war扩展名对应的目录存在)会被自动展开,除非unpackWARs属性值为false。如果重新部署更新的war文件,在重起Tomcat之前要删除先前展开的目录(如果autoDeploy属性值为true那么只要删除先前展开的目录更新后的war文件就会自动展开)。

对于appbase中含有/WEB-INF/web.xml文件的任何子目录都会自动产生一个Context,不管该子目录是否在conf/server.xml文件中出现过。这个新产生的Context将会根据DefaultContext的属性值进行设置,其context path为“/目录名”。

如果目录名为ROOT,那么context path为“”。

因此要使用上面的规则需要将xml设置文件拷贝到$CATALINA_HOME/conf/[engine_name]/[host_name]目录下或将war文件和含有web应用的目录拷贝到appbase目录下。

自动部署(Auto Deployer)也会跟踪如下web应用程序的变化:

更新WEB-INF/web.xml文件将会使web应用程序重新加载

更新已展开的war文件会使web应用程序卸载(undeploy)(同时移除先前展开的目录)并重新部署(deployment)

更新xml设置文件会使web应用程序卸载(undeploy)(不移除任何展开的目录)并重新部署(deployment)

在使用自动部署的时候xml设置文件中的docbase要指向appbase目录之外。否则部署将很困难或应用程序会被部署两次。

如果要显示的定义context,那么需要关闭自动部署。否则相应的context将会部署两次,这可能会有问题。


TAG: 服务器

 

评分:0

我来说两句

Open Toolbar