本篇来学习Tomcat常见两个配置知识,
- 第一个是端口占用的场景以及如何解决端口占用。
有两个解决办法,第一个是修改成别的端口启动tomcat,第二个是找到占用端口的后台进程,杀死这个进程,自然就解决了端口占用。 - 第二个是配置默认主页,默认应用。端设置默认主页和默认应用,就是输入一个地址,我不输入URI后面的什么html文件,也能够自动打开这个html文件。
1.端口占用问题
为了重现端口占用问题,我在cmd窗口再次启动tomcat,看看发生什么。在启动过程发现出错了,一闪而过,窗口就关闭了, 只好去tomcat目录下看日志文件了。打开catalina.2019-05-05.log日志文件,找到JVM_Bind位置。
05-May-2019 16:30:49.902 严重 [main] org.apache.catalina.core.StandardServer.await StandardServer.await: create[localhost:8005]:
java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:440)
at org.apache.catalina.startup.Catalina.await(Catalina.java:776)
at org.apache.catalina.startup.Catalina.start(Catalina.java:722)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)
jVM_Bind就是Java虚拟机已经绑定的意思。以后看到这个错误,就要想起端口被占用。端口默认是8080.也就是这个8080端口被占用,解决这个问题有两个办法
- 修改tomcat下conf下server.xml中的端口改成8080之外的,这种方法还不一定好用。
- 找出占用端口的程序,后台把进程杀掉就好了。
这里详细介绍下第二个方法。
在cmd里输入命令: netstat -ano
, 这里我截取一部分,主要看8080这个对应进程ID。
C:\Users\wwj>netstat -ano
活动连接
协议 本地地址 外部地址 状态 PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1164
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:2179 0.0.0.0:0 LISTENING 4960
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1508
TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING 15044
TCP 0.0.0.0:7680 0.0.0.0:0 LISTENING 7816
TCP 0.0.0.0:8009 0.0.0.0:0 LISTENING 7968
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 7968
TCP 0.0.0.0:8180 0.0.0.0:0 LISTENING 4512
TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING 968
在上面,找到8080占用进程的PID是7968, 然后我们去任务管理器中找到这个PID,右键选择关闭进程。
2.设置默认主页和默认应用
默认端口
这里说的默认端口是指80
,之前我们是这样输入网址去访问的http://localhost:8080/MyApp01/123.html
如果通过配置,这样也能访问http://localhost/MyApp01/123.html
这个就是这里说的默认端口配置,很简单浏览器访问默认端口是80,所以,我们需要去conf/server.xml文件把tomcat端口8080改成80,前提你系统80端口没有被占用。
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
然后不加端口号也可以直接进行访问;
默认主页
什么是默认主页呢,之前我们是http://localhost/MyApp01/123.html 才能访问,
如果通过这样http://localhost/MyApp01/
也能访问123.html的效果,这个就是默认主页。一般在登陆场景中我们应该经常见到;
我们这样去设置,在Tomcat中的conf
下找到web.xml
文件,编辑打开
在web.xml文件最后几行内容,或者搜索 welcome找到
<welcome-file-list>
<welcome-file>123.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
welcome-file是这样的,这里默认设置了3个,如果找不到123.html就找第二个index.htm,如果第二个找不到,就找第三个,所以,这里可以设置3个默认的主页。
默认应用
这里来说,默认应用,我们的应用名称是MyApp01, 如果tomcat访问不输入这个名称,默认访问的是tomcat的默认项目。
这个页面就是访问默认应用,就是下面这个ROOT项目。
所以,我们想把这个效果改成默认使用我们自己应用MyApp01,我们可以在Tomcat的webapps目录把MyApp01重名为ROOT,重启Tomcat服务就可以。