TomCat端口冲突问题
以前只知道当tomcat端口号冲突了如何修改tomcat默认的8080端口号
今天遇到个情况,装了个BO,自带个tomcat,这时就需要修改三个地方
修改Tomcat的端口号:
在默认情况下,tomcat的端口是8080,如果出现8080端口号冲突,用如下方法可以修改Tomcat的端口号:
首先: 在Tomcat的根(安装)目录下,有一个conf文件夹,双击进入conf文件夹,在里面找到Server.xml文件,打开该文件。
其次:在文件中找到如下文本:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" />
也有可能是这样的:
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />等等;
最后:将port="8080"改为其它的就可以了。如port="8081"等。
保存server.xml文件,重新启动Tomcat服务器,Tomcat就可以使用8081端口了。
注意,有的时候要使用两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作。
修改了上面的以后,还要修改两处:
(1)将 <Connector port="8009" enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />的8009改为其它的端口。
(2) 继续将<Server port="8005" shutdown="SHUTDOWN" debug="0">的8005改为其它的端口。
经过以上3个修改,应该就可以了
TomCat运行目录问题
首先:运行项目后查看日志:tail -f logs/catalina.out
配置实例参考:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="blogadmin" path="/" debug="0" reloadable="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
解析:docBase对应项目的名称
path对应用户访问的url前缀
现象:之前遇到很奇怪的问题,发完版之后没有效果,页面还是读取上一版的。
反复查找原因发现 http://localhost:8080/mobie 这个路径下的页面是正常的,
而 http://localhost:8080/这个页面是旧版本的。
为什么呢?
之前是我们在server.xml
添加了<Context/>配置节,目的是去掉 http://localhost:8080/项目名 后面的项目名,直接访问域名就可以访问网站。
这样做的却可以用域名访问,但是带来了隐藏很深的 很奇怪的问题。如上所诉
原因在于:启动tomcat 的时候,webapps目录下面的.war文件将被自动解压缩并部署为应用。同时mobile下的应用会copy到ROOT下。如果ROOT文件下不存在则mobile的应用(子文件)那么copy进去(问题就在这里
我们第一次发版的时候ROOT下并没有mobile 的应用所以copy 进去没有问题),再次发版的时候,由于ROOT下存在mobile 应用没有覆盖,所以出现两种结果。 http://localhost:8080/mobie 与 http://localhost:8080访问的页面不一致。
解决方法:找到原因之后,在每次发版之前删调ROOT,启动tomcat会重新生产ROOT,这样ROOT下应用就是最新的。
扩展:
ROOT 与webapps 的关系:
我们一般都是这么写http://localhost:8080/项目名,如果不写项目名默认就是webapps目录下的ROOT项目,ROOT里面就有那只猫。
比如说你打上http://localhost:8080 就直接访问root下面的文件了 默认为tomcat的欢迎页面
如果你把root下面文件换成你项目文件,那么http://localhost:8080这样的话就是访问你项目了
<host appBase="d:/aaa">
<Context path="/smswap" reloadable="true" docBase="D:\workspace\smswap\WebRoot"></Context>
</host>
我们先看appBase,这个目录表示:
1 这个目录下面的子目录将自动被部署为应用。
2 这个目录下面的.war文件将被自动解压缩并部署为应用
而docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系。
总结:
如果你想自己指定路径,那么应该在docBase里面