網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
在公司的一次項(xiàng)目改造過程中,需要將原來(lái)的IPV6替換成IPV4。查詢資料資料之后,你會(huì)遇到如下問題,總結(jié)解決辦法如下:
1、替換老版本Tomcat
tomcat6不支持監(jiān)聽ipv6 tomcat7支持監(jiān)聽ipv6 tomcat8支持監(jiān)聽ipv6
我們只需將tomcat換為7以上的版本即可!!!!!!!!!
2、項(xiàng)目無(wú)法啟動(dòng)
如果使用Tomcat 7以上的版本來(lái)替換老版本的Tomcat,那么問題來(lái)了你會(huì)無(wú)法啟動(dòng)項(xiàng)目。
錯(cuò)誤日志:
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.
因?yàn)樾掳姹镜腡omcat無(wú)法解析你的web.xml
解決辦法:
打開你的Tomcat的安裝目錄 找到conf目錄下的context.xml
在** **中添加屬性xmlBlockExternal,具體如:
<Context xmlBlockExternal="false">
3、Tomcat7攔截特殊字符
當(dāng)你在服務(wù)期內(nèi)使用ipv6地址進(jìn)行下載或者跳轉(zhuǎn)的時(shí)候,會(huì)出現(xiàn)如下錯(cuò)誤
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)
這是因?yàn)?/p>
- 根據(jù)rfc規(guī)范(RFC 3986規(guī)范定義了Url中只允許包含英文字母(a-zA-Z)、數(shù)字(0-9)、-_.~4個(gè)特殊字符以及所有保留字符(RFC3986中指定了以下字符為保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]))。
- url中不允許有 |,{,}等特殊字符,但在實(shí)際生產(chǎn)中還是有些url有可能攜帶有這些字符,特別是|還是較為常見的。在tomcat升級(jí)到7以后,對(duì)url字符的檢查都變嚴(yán)格了,如果出現(xiàn)這類字符,tomcat將直接返回400狀態(tài)碼。
解決辦法(SpringBoot)
在你的啟動(dòng)類上添加
@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 ,作出如下修改:
<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" relaxedQueryChars="[]|{}^\`"<>" redirectPort="8443" />
4、設(shè)置IPV6的監(jiān)聽
想讓你的tomcat即可以使用IPV4又可以使用IPV6訪問,需要進(jìn)行如下配置
打開打開你的Tomcat的安裝目錄 找到conf目錄下的server.xml,作出如下修改:
<Connector port="8080" protocol="HTTP/1.1" address="0.0.0.0" connectionTimeout="20000" relaxedQueryChars="[]|{}^\`"<>" redirectPort="8443" /> <Connector port="8080" protocol="HTTP/1.1" address="[::]" connectionTimeout="20000" relaxedQueryChars="[]|{}^\`"<>" redirectPort="8443" />
原文鏈接:https://blog.csdn.net/qq_43080270/article/details/108242311
相關(guān)推薦
- 2022-10-29 C++通過Makefile定義宏參數(shù),傳入程序
- 2022-07-16 Mybatis-plus設(shè)置某個(gè)字段值為null
- 2022-11-24 PyTorch?Dataset與DataLoader使用超詳細(xì)講解_python
- 2023-03-02 C++版本基于ros將文件夾中的圖像轉(zhuǎn)換為bag包_C 語(yǔ)言
- 2024-03-20 mybatis-plus不同類型多源數(shù)據(jù)庫(kù)分頁(yè)攔截器配置
- 2022-12-12 Android?Cocos?Creator游戲開發(fā)平臺(tái)打包優(yōu)化實(shí)現(xiàn)方案_Android
- 2022-05-26 Pytorch中使用ImageFolder讀取數(shù)據(jù)集時(shí)忽略特定文件_python
- 2022-02-27 微信小程序 - requestSubscribeMessage:fail can only be i
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支