服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Tomcat - Tomcat中使用ipv6地址的示例代码

Tomcat中使用ipv6地址的示例代码

2022-08-15 09:31AmongDec Tomcat

在公司的一次项目改造过程中,需要将原来的IPV6替换成IPV4,本文就详细的介绍Tomcat中使用ipv6地址的示例代码,具有一定的参考价值,感兴趣的可以了解一下

在公司的一次项目改造过程中,需要将原来的IPV6替换成IPV4。查询资料资料之后,你会遇到如下问题,总结解决办法如下:

1、替换老版本Tomcat

tomcat6不支持监听ipv6 tomcat7支持监听ipv6 tomcat8支持监听ipv6

我们只需将tomcat换为7以上的版本即可!!!!!!!!!

2、项目无法启动

如果使用Tomcat 7以上的版本来替换老版本的Tomcat,那么问题来了你会无法启动项目。

错误日志:

26-Aug-2020 16:11:15.558[RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXmlParser.parseWebXml Parse error in application web.xml file at [file:/F:/Idea-Code/chuangjhx/out/artifacts/emp_std_192_169_1_81_war_exploded/WEB-INF/web.xml]
    java.io.FileNotFoundException: Could not resolve XML resource [user] with public ID [null], system ID [userConfig.xml] and base URI [file:/F:/Idea-Code/chuangjhx/out/artifacts/emp_std_192_169_1_81_war_exploded/WEB-INF/web.xml] to a known, local entity.

因为新版本的Tomcat无法解析你的web.xml

解决办法:

打开你的Tomcat的安装目录 找到conf目录下的context.xml

在** **中添加属性xmlBlockExternal,具体如:

?
1
<Context xmlBlockExternal="false">

3、Tomcat7拦截特殊字符

当你在服务期内使用ipv6地址进行下载或者跳转的时候,会出现如下错误

Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:479)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:687)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

这是因为

  • 根据rfc规范(RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]))。
  • url中不允许有 |,{,}等特殊字符,但在实际生产中还是有些url有可能携带有这些字符,特别是|还是较为常见的。在tomcat升级到7以后,对url字符的检查都变严格了,如果出现这类字符,tomcat将直接返回400状态码。

解决办法(SpringBoot)

在你的启动类上添加

?
1
2
3
4
5
6
7
8
9
10
11
12
@Bean
public TomcatServletWebServerFactory webServerFactory() {
    TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
    factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
        @Override
        public void customize(Connector connector) {
            connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
            connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        }
    });
    return factory;
}

解决办法(Tomcat)

打开你的Tomcat 的安装目录 找到conf目录下的server.xml ,作出如下修改:

?
1
2
3
4
<Connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
               redirectPort="8443" />

4、设置IPV6的监听

想让你的tomcat即可以使用IPV4又可以使用IPV6访问,需要进行如下配置

打开打开你的Tomcat的安装目录 找到conf目录下的server.xml,作出如下修改:

?
1
2
3
4
5
6
7
8
9
10
<Connector port="8080" protocol="HTTP/1.1"
   address="0.0.0.0"
              connectionTimeout="20000"
              relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
              redirectPort="8443" />
   <Connector port="8080" protocol="HTTP/1.1"
   address="[::]"
              connectionTimeout="20000"
              relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
              redirectPort="8443" />

到此这篇关于Tomcat中使用ipv6地址的示例代码的文章就介绍到这了,更多相关Tomcat使用ipv6地址内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_43080270/article/details/108242311

延伸 · 阅读

精彩推荐
  • Tomcatwindows下tomcat7.0安装图文教程

    windows下tomcat7.0安装图文教程

    这篇文章主要为大家详细介绍了windows下tomcat7.0安装图文教程,感兴趣的小伙伴们可以参考一下 ...

    Road1314xn8672021-08-12
  • Tomcat解决Idea的tomcat启动报多个listener的错误问题

    解决Idea的tomcat启动报多个listener的错误问题

    这篇文章主要介绍了解决Idea的tomcat启动报多个listener的错误问题,本文给大家分享解决方法对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参...

    橘子惞4972021-09-17
  • TomcatTomcat配置及如何在Eclipse中启动

    Tomcat配置及如何在Eclipse中启动

    这篇文章主要介绍了Tomcat配置及如何在Eclipse中启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    老K的Java博客10622021-09-22
  • TomcatTomcat 热部署的实现原理详解

    Tomcat 热部署的实现原理详解

    这篇文章主要介绍了Tomcat 热部署的实现原理详解的相关资料,需要的朋友可以参考下...

    Tomcat教程网6622021-08-17
  • TomcatTomcat服务器响应过慢解决方案

    Tomcat服务器响应过慢解决方案

    这篇文章主要介绍了Tomcat服务器响应过慢解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    手撕高达的村长6442021-09-16
  • Tomcateclipse配置Tomcat和Tomcat出现无效端口解决办法

    eclipse配置Tomcat和Tomcat出现无效端口解决办法

    本文主要介绍了eclipse配置Tomcat和Tomcat出现无效端口解决办法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    java涛仔4642022-01-19
  • Tomcatintelli idea中配置Tomcat找不到的解决办法

    intelli idea中配置Tomcat找不到的解决办法

    这篇文章主要介绍了intelli idea中配置Tomcat找不到的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    maybe_u_like_吃茄子7472021-09-16
  • Tomcat搭建Tomcat 8源码开发环境的步骤详解

    搭建Tomcat 8源码开发环境的步骤详解

    相信大家都知道开源软件tomcat目前几乎已经是Java web开发的必备软件了,目前有很多关于tomcat的书籍,已经通过配置对tomcat进行一些跟应用业务功能的调优...

    Tomcat教程网11572021-08-12