关于Tomcat部署项目时部署两次问题的解决方案

来源:互联网 发布:java个人信息管理系统 编辑:程序博客网 时间:2024/06/05 19:16
  • 之前自己访问自己的项目都是通过ip端口号项目名进行访问的,也没有对Tomcat的server.xml进行配置。昨天备案的域名下来的,因为自己的小项目,就没用Nginx,想着直接配置下Tomcat的server.xml,端口号改为80(http请求的端口是80,改成80访问时可以不用写端口号),项目名去掉,希望通过域名直接访问项目。
    <Context path="" docBase="自定义的默认项目路径" debug="0" reloadable="true" />
    但这一配出现问题了,每次启动时都报内存溢出,不配置这一句话,就没有问题。于是我在本地window环境下弄同样的环境还是不行,网上有说改bin目录下catalina.bat的,在这个文件的首行加下面代码:
    set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M
  • 试了一下,确实可以了,但是治标不治本啊。所以我又仔细看了看控制台的启动日志,发现原本启动完的daily.war项目,又启动了ROOT,而且我到webapps下面看daily和ROOT文件夹的内容一样,这里我猜想,配置了
    <Context path="" docBase="" debug="0" reloadable="true"
    />

    会导致项目启动两次,一次是你的项目,一次是ROOT,进而导致内存溢出。
    解决办法:将Tomcat的server.xml的Host节点配置成如下:
    <Host name="localhost" appBase=""
    unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="/usr/tomcat/tomcat7/webapps/daily" debug="0" reloadable="false"/>
    </Host>

    其实就是将appBase里面的webapps干掉,将docBase路径改成你部署完的路径就可以了(daily是项目名),保存之后启动就只启动一次,不会再报内存溢出了。