tomcat配置server.xml文件

本文介绍如何在Tomcat中配置多个域名对应多个项目,并解决项目重复部署的问题。通过修改server.xml文件,使用不同域名访问不同项目,同时避免内存浪费。
一、配置多个域名对应多个项目

之前使用Tomcat配置server.xml的时候只是修改了端口号,其实也只会修改个端口号……
其实我知道这个server文件里有很多非常有用的配置,比如今天想要记录的配置多个host节点,实现多个域名分别对应着多个不同的项目。

<Host name="localhost"  appBase="webapps">
    <Context path="" docBase="\ROOT" /> 
</Host>

<Host name="www.mydomain1.com" appBase="webapps">
    <Context path="" docBase="WeChat"/>
</Host>

<Host name="www.mydomain2.com" appBase="webapps">
    <Context path="" docBase="vote"/>
</Host>

这里用到的两个域名(www.mydomain1.com、www.mydomain2.com)我已经在本地做了dns解析,把域名解析到了本地IP127.0.0.1。经过上面的配置我们已经实现了这样的功能:在浏览器输入www.mydomain1.com访问的是WeChat项目,输入www.mydomain2.com访问的是vote项目。这两个项目都放在Tomcat文件夹下的webapps目录下。
本来以为这样配置就完全没有问题了,但我还是经验太少了,这样配置的结果就是每个项目都会被多次部署。

二、解决项目多次部署问题

本以为项目多次部署没什么问题,但从Tomcat ROOT查看到的内存使用情况来看,多次加载项目还是增加了内存的消耗的,而且这种多次加载的事儿在我这是不允许发生的……

  • 原因

Host 节点:
  代表一个虚拟主机,每个虚拟主机和某个网络域名(Domain Name)相匹配。每个虚拟主机下都可以部署(deploy)一个或者多个Web 应用程序(Web Application),每个Web 应用程序对应于一个Context,有一个Context path。当虚拟主机获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理。匹配的方法是“最长匹配”,一个path=”“的Context将成为该虚拟主机的默认Context。所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配。

host节点的appBase,这个目录表示:
1 这个目录下面的子目录将自动被部署为应用。
2 这个目录下面的.war文件将被自动解压缩并部署为应用

这样造成的结果就是每个host读取项目的时候都会扫描到appBase中的项目并自动部署,

Context节点:
  一个Context对应于一个Web应用程序,一个Web应用程序由一个或者多个Servlet组成。

Context 在创建的时候又读取一次项目的文件夹,这一个项目又被部署一次(不知道真实情况是不是这样,目前我是这样理解的)

  • 解决
    既然造成项目多次部署的原因是多次读取了项目所在的文件夹,那我给他换一个路径存放项目不就行了-_-
    <Host appBase="webapps" name="localhost">
        <Context docBase="\ROOT" path=""/>  
    </Host>
    <Host appBase="webapps" name="www.mydomain1.com">
        <Context docBase="D:\mywebapp\WeChat" path=""/>
    </Host> 
    <Host appBase="webapps" name="www.mydomain2.com">
        <Context docBase="D:\mywebapp\vote" path=""/>
    </Host>

自己写的项目单独拿出来,放在独立的文件夹下,用绝对路径指到项目地址,这样就不会被多次部署了……
虽然这样解决了问题,但感觉好像有哪里不对啊……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值