昨天在网上研究了下关于将tomcat嵌入到主程序中进行运行,而不是像以前将一个web项目copy到tomcat中进行运行。之所以这样做的原因,即是因为项目部署到客户方,在进行更新的时候,需要手动地进行更新,再把相应代码copy到tomcat,然后再运行。运用embeded tomcat就可以将项目与tomcat分开,在进行更新时,先使用自定义的程序进行自动化更新,待更新完毕之后,再启动tomcat(或其它javaee容器)进行项目运行。
这样做的最终效果就是修改了项目的运行方式。原先的运行方式是以tomcat为中心,由tomcat来启动和终止项目,现在是由我们的启动程序为中心,由启动程序来负责启动和终止项目。就相当于现在流行的cs程序一样,有单独的启动脚本,在启动时进行环境预初始化,更新程序以及其它操作,待完成之后再进行最终的项目启动。
这篇主要讲解如何使用embeded tomcat在代码中进行启动和终止。网上的一般文章均为tomca5.x来做,这里使用了最新的tomcat7,因为tomcat7为embeded开发,单独发布了org.apache.tomcat.embed包,以进行独立的embed开发。以下是相应的maven包
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
< dependency > < groupId >org.apache.tomcat.embed</ groupId > < artifactId >tomcat-embed-core</ artifactId > < version >7.0.2</ version > </ dependency > < dependency > < groupId >org.apache.tomcat</ groupId > < artifactId >tomcat-util</ artifactId > < version >7.0.2</ version > </ dependency > < dependency > < groupId >org.apache.tomcat.embed</ groupId > < artifactId >tomcat-embed-jasper</ artifactId > < version >7.0.2</ version > </ dependency > < dependency > < groupId >org.apache.tomcat.embed</ groupId > < artifactId >tomcat-embed-logging-juli</ artifactId > < version >7.0.2</ version > </ dependency > |
使用了embed包中的core包,以及用于编译jsp的jasper包,然后是工具类以及进行上场记录的logging-juli包。开始写代码:
1
2
3
4
5
6
7
|
//设置工作目录 String catalina_home = "d:/" ; Tomcat tomcat = new Tomcat(); tomcat.setHostname( "localhost" ); tomcat.setPort(startPort); //设置工作目录,其实没什么用,tomcat需要使用这个目录进行写一些东西 , Courier, monospace !important; font-weight: normal !important; font-style: normal !important
|