Tomcat是Apache基金下的一个很成功的产品,作为Java应用容器被广泛的使用。当然它不像WebSphere、WebLogic那样强大,甚至比起JBoss也有所不如,但Tomcat的量级很轻,使用很方便,深入初学者或轻量级应用的追捧。

本文讲Tomcat绑定IP地址的问题。默认情况下,Tomcat会监听8080端口,这个我们都知道。但它会监听哪些IP呢?默认情况下,它会监听所有的IP。

下面这一段是从Tomcat默认的server.xml中抽取的Connector这段,我们可以看到没有关系监听IP的相关设置。

<Connector port="8080" protocol="HTTP/1.1"

   connectionTimeout="20000"

   redirectPort="8443" />

               

运行/bin/startup.bat来启动Tomcat后,我们使用Netstat命令来查看一下Tomcat绑定了哪些IP。

D:\splaybow.com\apache-tomcat-6.0.20\bin>startup.bat

Using CATALINA_BASE:   D:\splaybow.com\apache-tomcat-6.0.20

Using CATALINA_HOME:   D:\splaybow.com\apache-tomcat-6.0.20

Using CATALINA_TMPDIR: D:\splaybow.com\apache-tomcat-6.0.20\temp

Using JRE_HOME:        D:\splaybow.com\jdk1.6.0_16

D:\splaybow.com\apache-tomcat-6.0.20\bin>netstat -an | findstr "8080"

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

  TCP    [::]:8080              [::]:0                 LISTENING

从上面netstat的结果可以看出,Tomcat监听了IPv4的0.0.0.0的8080端口,也监听了IPv6的[::]的8080端口。即可以总结为Tomcat监听了所有的IP协议的所有IP地址的8080端口。

那么如果我们只想让Tomcat监听传统意义上的本地127.0.0.1的IP地址,那么应该怎么设置呢?且看下面这段配置。

<Connector port="8080" address="127.0.0.1" protocol="HTTP/1.1"

   connectionTimeout="20000"

   redirectPort="8443" />

这段Tomcat监听IP的配置中,可以与上面一段配置做一下比较,我们看到多了一句: address="127.0.0.1"。好,我们来看看运行后结果:

D:\splaybow.com\apache-tomcat-6.0.20\bin>startup.bat

Using CATALINA_BASE:   D:\splaybow.com\apache-tomcat-6.0.20

Using CATALINA_HOME:   D:\splaybow.com\apache-tomcat-6.0.20

Using CATALINA_TMPDIR: D:\splaybow.com\apache-tomcat-6.0.20\temp

Using JRE_HOME:        D:\splaybow.com\jdk1.6.0_16

D:\splaybow.com\apache-tomcat-6.0.20\bin>netstat -an | findstr "8080"

  TCP    127.0.0.1:8080         0.0.0.0:0              LISTENING

OK,Tomcat已经如我们所愿,只监听了IP地址127.0.0.1的8080端口了。

关于设置Tomcat监听指定的IP地址,本文就介绍这么多,希望对您有所帮助,谢谢!

03-14 05:22