原创文章,转载请注明出处
该嵌入tomcat的实现可以直接运行类来启动tomcat,也可以在任意路径下运行bat文件启动tomcat,先看一下效果
开发过程,只需要运行类即可
发布过程,只需把war放在bin文件加下,配置的mode项改为release,运行bat文件即可
嵌入Tomcat有以下好处:
1、增加开发效率,不再需要下载tomcat,不再需要配置环境变量,不需要配置myeclipse。
2、方便售后发布程序,将调用内嵌tomcat的java类调用放在一个bat文件中,只需要双击bat文件即可进行部署。
3、从tomcat7开始,有自身的内嵌版本,大小非常的小。
思路:
1、普通java工程,内嵌一个tomcat,如果是tomcat7,请使用内嵌版本。该java工程负责一个事情,启动tomcat
2、可配置化,可以启动指定的多个工程,可指定各个工程的context名称,域名或ip
3、写一个bat脚本,方便任意路径进行部署
如何实现tomcat的启动,tomcat6和tomcat7略有差异,这里分别来进行介绍
我们先把tomcat需要的文件夹在工程中建立,conf,lib,webapps。conf中可以把tomcat中的context.xml和web.xml拷入,但是需要在代码中加载。
lib中需要拷入的jar包如下:
嵌入tomcat6
1、tomcat lib下的所有jar包
2、bin目录下的tomcat-juli.jar
3、jdk中的tool.jar
嵌入tomcat7
tomcat7-embedded.zip下的所有jar包
最后,需要将这些jar包加入到classpath下
我们再看一下tomcat的结构
也可以打开server.xml,很直观的可以看到其结构
1、tomcat6的启动
按照tomcat的结构我们一步一步的来实现。
a、创建我们的tomcat服务
主要是通过Embedded类来进行启动的,该类表示tomcat结构中的一个Server
Embedded tomcat=new Embedded();
注意设置环境变量
tomcat.setCatalinaHome(TOMCAT_HOME);
TOMCAT_HOME为tomcat在磁盘上的根路径
b、创建engine
需要先创建host
创建host需要先创建context
b.1、创建context
一个host可以有多个context
tomcat.createContext(CONTEXT_PATH, WEB_APP_PATH);
CONTEXT_PATH为访问的名称,可以任意指定,必须以"/"开头
WEB_APP_PATH为需要访问的工程路径,如果是源码环境,为WebRoot目录。如果是发布环境,直接为工程目录
其实这里的WEB_APP_PATH为docbase,也就是手动指定需要管理的web应用。如果使用appbase的话,会自动把该路径下的web应用进行管理