Tomcat5.5获取监听IPV6和IPV4的修改方法

Tomcat5.5获取监听IPV6和IPV4的修改方法

今天遇到一个很奇怪的问题,在同一台机器上的应用1和应用2,使用相同的Tomcat,只不过是启动的端口不同,发现两个应用都会出现很奇怪的问题:两个应用监听的端口都在监听状态,但是通过telnet 127.0.0.1 port 都连接不上,很是奇怪。出现问题的机器操作系统为windows server2008。下图中的“8080”端口是可以通过telnet连接的,但是“8088”端口通过telnet是连接不成功的,连接时会报“无法连接到目标端口的错误”。通过netstat命令查看两个端口的区别,区别是:8080端口是绑定到“0.0.0.0:8080”,而8088端口则没有这样的绑定。如下图:

Tomcat5.5获取监听IPV6和IPV4的修改方法_第1张图片

 

任何诡异的现象后面都隐藏着一个不为人知的问题,抱着不达目的誓不罢休的精神最终在网上找到了解决方案,经过测试,下面的方案是可行的。解决方案如下:

找到tomcat5.5目录下的conf\server.xml文件,在下面的代码中添加红色字体内容:

<Connector port="8080"  maxHttpHeaderSize="8192"

               maxThreads="150"  minSpareThreads="25" maxSpareThreads="75"

                enableLookups="false" redirectPort="8443"  acceptCount="100"

                connectionTimeout="20000"  disableUploadTimeout="true" />

 

添加address="0.0.0.0",修改后内容如下:

<Connector port="8080"  maxHttpHeaderSize="8192"address="0.0.0.0"

               maxThreads="150"  minSpareThreads="25" maxSpareThreads="75"

                enableLookups="false" redirectPort="8443"  acceptCount="100"

               connectionTimeout="20000"  disableUploadTimeout="true"/>

 

产生此问题的根本原因是Tomcat5.5在启动的时候,如果检测到系统支持IPV6,默认监听的是IPV6的端口,导致通过IPV4无法访问。使用address=“0.0.0.0”的意思是监听IPV4协议栈下的任何端口。

IPV4协议监听任何地址应配置:0.0.0.0

IPV6协议监听任何地址赢配置:0:0:0:0:0:0:0:0

据说Tomcat6及之后的版本不会出现问题,默认监听的是IPV4的地址端口。

你可能感兴趣的:(tomcat,telnet,ipv4,ipv6)