`

关于tomcat缺省默认应用配置导致启动两个实例的问题

阅读更多

配置service.xml:
<Host name="localhost"  appBase="D:\tools\java\tomcat\apache-tomcat-7.0.16\webapps\"
            unpackWARs="true" autoDeploy="true">

         <Context path="" docBase="dabichong" debug="0" reloadable="true" />
使用这种方式存在问题.
发现一个应用程序,启动了两个实例.
造成时间程序执行存在问题,日志打印存在问题.
根据网上的一些资料.说这是apache的bug.

解决方式有三点.

方法一: tomcat依然按照localhost:8080/dabichong访问
   nginx反向代理到localhost:8080/dabichong上
   nginx配置如下:
   location  / {
                index   sys.main.d;
                #root    D:/tools/java/tomcat/apache-tomcat-7.0.16/webapps/dabichong/;
                proxy_pass      http://127.0.0.1:8080/; #主要在这里,设置一个代理
                proxy_redirect http://127.0.0.1:8080/ /; ##将代理后的链接,回写成127.0.0.1 这样在浏览器上看到的是127.0.0.1
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }


方法二:将目录从webapps 中移到其他目录,然后配置host下面的Context
       <Context path="" docBase="D:/tools/java/tomcat/apache-tomcat-7.0.22/scm_app/dabichong" debug="0" reloadable="false" useHttpOnly="true">
        </Context>

方法三:直接把应用发布到ROOT应用下
       service.xml 中的<Context path="" docBase="dabichong" debug="0" reloadable="true" /> 缺省应用配置需要去掉.
       nginx中将请求转过来就可以了
       location / {
       root D:/tools/java/tomcat/apache-tomcat-7.0.22/webapps/dabichong/;
       index   sys.index.d;
       proxy_pass  http://127.0.0.1:8080;
    }


我选择的是方法三,方便简单.
另外通过应用启动打印出来的日志,确定是启动一个实例还是两个实例.
ok 问题搞定.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics