加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.52wenzhou.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

Tomcat5.5监听IPV6和IPV4

发布时间:2018-12-10 16:18:53 所属栏目:外闻 来源:PM小曹
导读:Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat5.5监听IPV6和IPV4

今天小编就来聊一聊之前在项目实施过程中遇到过的一个关于Tomcat的很诡异的问题,当用Tomcat5.5部署完web项目之后,在浏览器界面通过localhost可以进行访问,但是通过IP地址访问的时候,却是怎么也连接不上,一直提示访问连接无效,(Tomcat6.0及以上版本无此现象,原因是对配置文件做了优化)后来查询资料、网上百度,才最终得到解决方法,为此还浪费了将近一天的时间和100多块钱的话费,今天特意整理一下,以方便后面的小伙伴再遇到类似的问题不至于无所适从。

1现象描述

当时的场景是在同一台机器上搭建了两个应用:应用1和应用2,使用相同的Tomcat5.5,只不过是启动的端口不同(8080和8088),发现两个应用监听的端口都在监听状态,但是通过telnet 127.0.0.1 port 都连接不上,,很是奇怪。下图中的“8080”端口是可以通过telnet连接的,但是“8088”端口通过telnet是连接不成功的,连接时会报“无法连接到目标端口的错误”。

通过netstat命令查看两个端口的区别,发现8080端口是绑定到“0.0.0.0:8080”,而8088端口则没有这样的绑定,而是直接绑定到了IPV6的地址,这样的话,无论你怎么访问都是无济于事,如下图:

Tomcat5.5监听IPV6和IPV4

2解决办法

找到tomcat5.5目录下的confserver.xml文件:

  1. <Connector URIEncoding="utf-8" acceptCount="100" connectionTimeout="20000"  
  2. disableUploadTimeout="true"enableLookups="false"  
  3. maxHttpHeaderSize="8192" maxSpareThreads="75" 
  4. maxThreads="150" minSpareThreads="25" port="8080" 
  5. redirectPort="8443"/> 

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

  1. <Connector URIEncoding="utf-8" acceptCount="100" connectionTimeout="20000"  
  2. disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" 
  3. maxSpareThreads="75" maxThreads="150"  
  4. minSpareThreads="25" port="8080"  
  5. redirectPort="8443"  
  6. address="0.0.0.0"/> 

后来深入了解了一下,才知道产生此问题的根本原因是Tomcat5.5在启动的时候,如果检测到系统支持IPV6,默认监听的是IPV6的端口,导致通过IPV4无法访问。修改配置文件添加address=“0.0.0.0”是为了确保tomcat5.5启动时监听的是IPV4协议栈下的任何端口。

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

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

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

【编辑推荐】

  1. IPv6带来新问题:顶级网络间出现冲突
  2. 为什么43亿个IPv4不够用了?(IPv4的锅IPv6来背)
  3. 你知道IPv4,但是新的IPv6,你有了解多少
  4. 从IPv4到IPv6,中国根服务器到底谁说了算
  5. IPV4与IPV6的头部PK
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读