Tomcat 部署项目细节深入研究

简介:

 我刚花了2个多小时反编译看了下代码,应该是这样的过程,好精妙的

 

Part 1 在应用的META-INF/context.xml下面配置数据源的必要性

 

Tomcat的部署应用过程在HostConfig目录下的deployApps() 方法中

 


 

 


 

实际就是做了以下结果事情->多种部署tomcat应用的方式

(1)      部署 %CATALINA_HOME%/conf/Catalina/localhost 目录下面的 .xml  

deployDescriptors(configBase, configBase.list());

(2)     部署 %CATALINA_HOME%/webapps/ 目录下以.war 结尾的文件

deployWARs(appBase, filteredAppPaths);

(3)     部署%CATALINA_HOME%/webapps 目录下的目录,也就是没有打包的那些应用

deployDirectories(appBase, filteredAppPaths);

 

而我们的问题就在第二种和第三种部署方式里面,

deployWARs (部署所有的war)里面是一个for循环,来依次调用deployWAR( 部署单个war)

deployWAR , 贴上代码


 

不难发现,他会打开一个字节流从 war文件中读取 META-INF/context.xml 文件,然后把它 copy 

      %CATALINA_HOME%/conf/Catalina/localhost/下于war应用名称相对应的xml文件中,也就是这里的


也就是%CATALINA_HOME%/conf/Catalina/localhost

 

所以,这个目录,还是必要的。

 

 

Part 2tcServerTomcat的关系:

tcServer不同于普通的tomcat,他的%CATALINA_HOME%/conf/Catalina/localhost 根本没有,其实是这样的,他很精妙的吧部署目录指向了

%TCSERVER_HOME%\spring-insight-instance,为什么这么说呢?

%TCSERVER_HOME%\tcruntime-ctl.bat 

 

也就是说INSTANCE_BASE 设为了当前目录,也就是%TCSERVER_HOME%


素所以我们可以看到,CATALINA_BASECATALINA_HOME都被设置为了%TCSERVER_HOME%/%1 ,而这个%1是第一个参数spring-insight-instance,所以CATALINA_BASECATALINA_HOME都被设置为%TCSERVER_HOME%/spring-insight-instance

下面就迎刃而解了。

 

Part 3:验证结论

我们在%TCSERVER_HOME% \spring-insight-instance\conf\Catalina\localhost 下果然找到了estore.xml, 符合<项目名>.xml的风格


打开看下, 发现里面的内容正是从META-INF/context.xml中复制来的,并且用docBase指向了来源。于是Part 1的论点得到证明。对比下面两张图

 

estore.xml


META-INF/context.xml


 

然后tcServer就可依据estore.xml来部署estore应用





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/834349,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
Arthas 监控 Java
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
173 2
|
4月前
|
应用服务中间件 Linux Windows
win下tomcat部署问题积累
win下tomcat部署问题积累
|
2月前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
39 0
|
4月前
|
XML Java 应用服务中间件
Tomcat - 部署项目的四种方式
Tomcat - 部署项目的四种方式
38 0
|
4月前
|
Java 应用服务中间件 API
SpringBoot项目 Tomcat部署war程序时启动成功但是访问404异常处理
SpringBoot项目 Tomcat部署war程序时启动成功但是访问404异常处理
80 0
|
4月前
|
XML Java 应用服务中间件
tomcat三种部署方式和推荐方式
tomcat三种部署方式和推荐方式
|
1天前
|
Java 应用服务中间件 Linux
在阿里云服务器上部署Tomcat详细图文详解
本文介绍了在阿里云服务器上安装和配置JDK和Tomcat的步骤。首先,需要注册阿里云账号并进行实名认证,然后购买并设置服务器。接着,通过File Zilla连接服务器,创建Java和Tomcat的安装目录,并将JDK和Tomcat的tar.gz文件上传到服务器,解压并重命名。之后,配置JDK的环境变量,将catalina.sh复制到/etc/init.d/目录下,并修改相关配置。最后,启动Tomcat并配置安全组规则,确保可以通过公网访问。
|
4天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
20 0
|
4月前
|
Java 应用服务中间件
SpringBoot 项目war包部署 配置外置tomcat方法
SpringBoot 项目war包部署 配置外置tomcat方法
70 0
|
7天前
|
Java 应用服务中间件 Linux
阿里云服务器部署多个tomcat
阿里云服务器部署多个tomcat