Tomcat5中的部署方式:
1 应用程序部署器(Deployer)
程序员朋友不要以为这是什么全新的东西,其实以前的版本就已经有了,只不过在Tomcat4中没有提出这个概念,且它的功能被分散在各个组件中,给人的感觉是比较支离破碎的。于是乎,在Tomcat5中对其进行了包装和增强,提出了Deployer这个逻辑概念,用于集中表示应用程序部署和发布功能。Tomcat5对其的主要改进就是进行了一些优化,增强了动态部署的功能,减少了重启Tomcat的次数,增强了服务器的健壮性和可靠性。
Deployer提供的主要功能就是静态(在tomcat启动之前)或者动态(在Tomcat运行以后)进行Web应用程序的部署和删除,在某些情况下Deployer需要和Manager管理工具联合使用。
1.1 Context descriptors
这个也不是新东西了,Tomcat4中的Manager和Admin管理工具其实就是利用它来部署的。在Tomcat5中提出了Context descriptor这个概念,且为其配置了一个专有目录,而不像Tomcat4那样大杂烩一般地放置在$appBase目录下。既然了有了名分,当然要为其单独配置一个目录才能显其身份:)
Context descriptor是一个只包含Context元素的xml格式的部署文件,其中Context元素与server.xml中的Context元素配置相同。对于一个给定的主机,Context descriptor放置在$CATALINA_HOME/conf/[enginename]/[hostname]/目录下面。Tomcat5默认安装时,在$CATALINA_HOME\conf\Catalina\localhost目录中有admin.xml和manager.xml,是两个管理工具的部署描述符文件。而这两个文件在Tomcat4中是放置在$CATALINA_HOME/webapps目录下面的。呵呵。。。果然是换汤不换药啊:)
注意事项:context descriptor的文件名可以与Web应用程序名无关,但是Tomcat在部署这个应用程序的时候所创建的程序运行上下文(Context)的名称是与Web应用程序名称匹配的。
1.2 静态部署
静态部署是指在Tomcat运行之前就把相关的Web应用程序放置到合适的目录,在Tomcat启动的时候自动来部署这些应用程序。
如果"deployOnStartup"属性值为true,那么在Tomcat启动时,在$appBase目录下的web应用程序将被自动部署。部署的过程如下:
• Context元素声明的Web应用程序将被首先部署,这包括server.xml和context descriptor文件中的Context元素所指的应用程序;
• 部署扩展目录形式的Web应用程序;
• 部署WAR形式的Web应用程序;
Tomcat5对于静态方式的部署的增强主要就是:
1、对于context descriptor方式的应用程序的部署。
2、如果扩展目录方式的应用程序对应有一个WAR文件,且WAR是更新过的,扩展目录将被自动删除,Web应用程序将被从WAR文件中重新部署。而在Tomcat4中,即使WAR文件已更新也无法被重新部署,仍然会使用旧的扩展目录方式的Web应用程序,除非你自己手动删除目录,记得还要重启Tomcat哦。这么麻烦?(#@($)#*$),看来还是Tomcat5好啊:)
1.3 动态部署
动态部署是指在Tomcat已经运行以后在不重启服务器的情况下部署应用程序的方式。
如果虚拟主机的"autoDeploy"属性值为true,则主机会在需要的时候试图去部署和更新应用程序。这是由虚拟主机在后台运行的一个负责自动加载的处理线程来完成的,它的工作流程如下:
1、部署新放入$appBase目录的War方式的应用程序。
2、部署新放入$appBase目录的扩展目录方式的应用程序。
3、如果一个扩展目录方式的应用程序对应的War文件更新了,则删除此目录,从War文件中重新解开并部署。如果”unpackWARs”属性值为false,则不解开,从War文件中直接运行。(记住:不用自己删除扩展目录,也不用重启服务器)
4、如果应用程序的/WEB-INF/web.xml文件被改变,则重新部署这个应用。
5、如果应用程序对应的Context元素配置发生了改变,则重新部署这个应用。这包括server.xml或者上下文描述符文件中的Context元素。
6、如果$CATALINA_HOME/conf/[enginename]/[hostname]/目录下增加了上下文描述符文件,则重新部署这个应用。
看来Tomcat5在动态部署上花费了不少功夫,其中的亮点主要就是如果我们修改了web.xml、server.xml配置文件,增加了上下文描述符文件,动态更新了War文件时都可以实现应用程序的自动部署和更新,而不用重新启动Tomcat服务器,在Tomcat4中都是必须重新启动服务器的,这是一个非常喜人的变化。毕竟在对服务器的健壮性和可靠性要求越来越高的今天,重启服务器都是一件令我们非常头疼的一件事情。以后终于可以挺直腰杆对客户说“这回坚决不用重启服务器!”嘿嘿。。。幸福啊!
1.4 用Client Deployer工具包部署
这个才是Tomcat5中名副其实的创新,它是一个全新的部署器。
client deployer是一个集验证、编译、部署功能与一体的工具包。它使用Ant来实现应用程序的自动化验证和编译,使用Manager管理工具来实现应用程序的自动化部署。
这个工具包包含:Catalina Ant工具、Jasper编译器(用于将jsp编译为servlet)、应用程序验证工具(validator task)。默认的验证工具的实现类是org.apache.catalina.ant.ValidatorTask,它只允许以扩展目录的文件路径作为唯一的参数。
此部署工具包使用一个事先写好的Ant脚本,包含如下一些目标(target):
• compile (默认):用于验证和编译Web应用程序。它可以在不启动Tomcat的情况下被单独使用。由于使用的是新的Jasper编译器的缘故,编译后的应用程序将只能在Tomcat 5.X版本上使用。需要提醒的是,不光是jsp文件被编译为servlet, 应用程序的/WEB-INF/classes目录下的Java源文件也将被同时编译为class文件。
• deploy:将Web应用程序部署到Tomcat服务器中。
• undeploy:从服务器中解除部署已经部署的某个应用程序。
• start:启动Web应用程序
• reload:重新加载Web应用程序
• stop:停止Web应用程序
以下是Ant脚本中的一些重要属性:
• build:编译以后的文件默认放置在${build}/webapp${path}。编译目标执行完以后,生成了应用程序的War ―― ${build}/webapp${path}.war.
• webapp:放置需要被验证和编译的Web应用程序(扩展目录方式)的文件路径。默认值为”myapp”。
• path:Web应用程序部署后对应的运行上下文的路径默认是”/myapp“。
• url:放置Manager管理工具的绝对路径,它被部署工具包用来部署和解除部署应用程序。默认情况下,部署器将试图使用http://localhost:8080/manager访问本机的Manager管理工具。
• username:可以使用Manager管理工具的超级用户的用户名。
• Password:超级用户的密码。
1 应用程序部署器(Deployer)
程序员朋友不要以为这是什么全新的东西,其实以前的版本就已经有了,只不过在Tomcat4中没有提出这个概念,且它的功能被分散在各个组件中,给人的感觉是比较支离破碎的。于是乎,在Tomcat5中对其进行了包装和增强,提出了Deployer这个逻辑概念,用于集中表示应用程序部署和发布功能。Tomcat5对其的主要改进就是进行了一些优化,增强了动态部署的功能,减少了重启Tomcat的次数,增强了服务器的健壮性和可靠性。
Deployer提供的主要功能就是静态(在tomcat启动之前)或者动态(在Tomcat运行以后)进行Web应用程序的部署和删除,在某些情况下Deployer需要和Manager管理工具联合使用。
1.1 Context descriptors
这个也不是新东西了,Tomcat4中的Manager和Admin管理工具其实就是利用它来部署的。在Tomcat5中提出了Context descriptor这个概念,且为其配置了一个专有目录,而不像Tomcat4那样大杂烩一般地放置在$appBase目录下。既然了有了名分,当然要为其单独配置一个目录才能显其身份:)
Context descriptor是一个只包含Context元素的xml格式的部署文件,其中Context元素与server.xml中的Context元素配置相同。对于一个给定的主机,Context descriptor放置在$CATALINA_HOME/conf/[enginename]/[hostname]/目录下面。Tomcat5默认安装时,在$CATALINA_HOME\conf\Catalina\localhost目录中有admin.xml和manager.xml,是两个管理工具的部署描述符文件。而这两个文件在Tomcat4中是放置在$CATALINA_HOME/webapps目录下面的。呵呵。。。果然是换汤不换药啊:)
注意事项:context descriptor的文件名可以与Web应用程序名无关,但是Tomcat在部署这个应用程序的时候所创建的程序运行上下文(Context)的名称是与Web应用程序名称匹配的。
1.2 静态部署
静态部署是指在Tomcat运行之前就把相关的Web应用程序放置到合适的目录,在Tomcat启动的时候自动来部署这些应用程序。
如果"deployOnStartup"属性值为true,那么在Tomcat启动时,在$appBase目录下的web应用程序将被自动部署。部署的过程如下:
• Context元素声明的Web应用程序将被首先部署,这包括server.xml和context descriptor文件中的Context元素所指的应用程序;
• 部署扩展目录形式的Web应用程序;
• 部署WAR形式的Web应用程序;
Tomcat5对于静态方式的部署的增强主要就是:
1、对于context descriptor方式的应用程序的部署。
2、如果扩展目录方式的应用程序对应有一个WAR文件,且WAR是更新过的,扩展目录将被自动删除,Web应用程序将被从WAR文件中重新部署。而在Tomcat4中,即使WAR文件已更新也无法被重新部署,仍然会使用旧的扩展目录方式的Web应用程序,除非你自己手动删除目录,记得还要重启Tomcat哦。这么麻烦?(#@($)#*$),看来还是Tomcat5好啊:)
1.3 动态部署
动态部署是指在Tomcat已经运行以后在不重启服务器的情况下部署应用程序的方式。
如果虚拟主机的"autoDeploy"属性值为true,则主机会在需要的时候试图去部署和更新应用程序。这是由虚拟主机在后台运行的一个负责自动加载的处理线程来完成的,它的工作流程如下:
1、部署新放入$appBase目录的War方式的应用程序。
2、部署新放入$appBase目录的扩展目录方式的应用程序。
3、如果一个扩展目录方式的应用程序对应的War文件更新了,则删除此目录,从War文件中重新解开并部署。如果”unpackWARs”属性值为false,则不解开,从War文件中直接运行。(记住:不用自己删除扩展目录,也不用重启服务器)
4、如果应用程序的/WEB-INF/web.xml文件被改变,则重新部署这个应用。
5、如果应用程序对应的Context元素配置发生了改变,则重新部署这个应用。这包括server.xml或者上下文描述符文件中的Context元素。
6、如果$CATALINA_HOME/conf/[enginename]/[hostname]/目录下增加了上下文描述符文件,则重新部署这个应用。
看来Tomcat5在动态部署上花费了不少功夫,其中的亮点主要就是如果我们修改了web.xml、server.xml配置文件,增加了上下文描述符文件,动态更新了War文件时都可以实现应用程序的自动部署和更新,而不用重新启动Tomcat服务器,在Tomcat4中都是必须重新启动服务器的,这是一个非常喜人的变化。毕竟在对服务器的健壮性和可靠性要求越来越高的今天,重启服务器都是一件令我们非常头疼的一件事情。以后终于可以挺直腰杆对客户说“这回坚决不用重启服务器!”嘿嘿。。。幸福啊!
1.4 用Client Deployer工具包部署
这个才是Tomcat5中名副其实的创新,它是一个全新的部署器。
client deployer是一个集验证、编译、部署功能与一体的工具包。它使用Ant来实现应用程序的自动化验证和编译,使用Manager管理工具来实现应用程序的自动化部署。
这个工具包包含:Catalina Ant工具、Jasper编译器(用于将jsp编译为servlet)、应用程序验证工具(validator task)。默认的验证工具的实现类是org.apache.catalina.ant.ValidatorTask,它只允许以扩展目录的文件路径作为唯一的参数。
此部署工具包使用一个事先写好的Ant脚本,包含如下一些目标(target):
• compile (默认):用于验证和编译Web应用程序。它可以在不启动Tomcat的情况下被单独使用。由于使用的是新的Jasper编译器的缘故,编译后的应用程序将只能在Tomcat 5.X版本上使用。需要提醒的是,不光是jsp文件被编译为servlet, 应用程序的/WEB-INF/classes目录下的Java源文件也将被同时编译为class文件。
• deploy:将Web应用程序部署到Tomcat服务器中。
• undeploy:从服务器中解除部署已经部署的某个应用程序。
• start:启动Web应用程序
• reload:重新加载Web应用程序
• stop:停止Web应用程序
以下是Ant脚本中的一些重要属性:
• build:编译以后的文件默认放置在${build}/webapp${path}。编译目标执行完以后,生成了应用程序的War ―― ${build}/webapp${path}.war.
• webapp:放置需要被验证和编译的Web应用程序(扩展目录方式)的文件路径。默认值为”myapp”。
• path:Web应用程序部署后对应的运行上下文的路径默认是”/myapp“。
• url:放置Manager管理工具的绝对路径,它被部署工具包用来部署和解除部署应用程序。默认情况下,部署器将试图使用http://localhost:8080/manager访问本机的Manager管理工具。
• username:可以使用Manager管理工具的超级用户的用户名。
• Password:超级用户的密码。