博客主页:https://tomcat.blog.csdn.net
博主昵称:农民工老王
主要领域:Java、Linux、K8S
期待大家的关注💖点赞👍收藏⭐留言💬
目录
最近的工作中遇到一个任务:让一个war包形式的Java web程序运行在Tomcat10中。经过一些尝试,现已顺利完成任务。在此,把我在使用Tomcat10过程中踩过的坑总结成一篇博客,以作为各位的前车之鉴。
servlet的包名有变化
Tomcat 10 已将servlet的包名从
javax.servlet
更改为
jakarta.servlet
,所以代码中凡是引入了servlet包的地方都需要修改。如果不修改,有很大的概率会遇到一些莫名其妙的报错。
Java代码中可以通过批量的查找替换进行修改。如:
之前的下列代码:
importjavax.servlet.Servlet;importjavax.servlet.ServletConfig;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;
需要修改为:
importjakarta.servlet.Servlet;importjakarta.servlet.ServletConfig;importjakarta.servlet.ServletException;importjakarta.servlet.http.HttpServlet;
还需要将pom.xml中servlet的依赖修改为:
<dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>5.0.0</version><scope>provided</scope></dependency><dependency><groupId>jakarta.servlet.jsp</groupId><artifactId>jakarta.servlet.jsp-api</artifactId><version>3.0.0</version><scope>provided</scope></dependency><dependency><groupId>jakarta.servlet.jsp.jstl</groupId><artifactId>jakarta.servlet.jsp.jstl-api</artifactId><version>2.0.0</version></dependency>
Https设置有变化
要实现Https访问,都是修改conf/server.xml,但其配置方式有一些变化。
这是Tomcat 8,Tomcat 9的配置方式:
<Connectorport="443"protocol="HTTP/1.1"SSLEnabled="true"maxThreads="150"scheme="https"secure="true"clientAuth="false"sslProtocol="TLS"keystoreFile="conf/tomcat.keystore"keystorePass="184116ab89"URIEncoding="UTF-8"relaxedPathChars="|{}[],%"relaxedQueryChars="|{}[],%"/>
下面是Tomcat10的配置方式
<Connectorprotocol="org.apache.coyote.http11.Http11NioProtocol"port="443"maxThreads="150"SSLEnabled="true"><SSLHostConfig><CertificatecertificateKeystoreFile="conf/tomcat.keystore"certificateKeystorePassword="184116ab89"relaxedPathChars="|{}[],%"relaxedQueryChars="|{}[],%"type="RSA"/></SSLHostConfig></Connector>
可能遇到的其他问题
运行Tomcat10的启动程序,却启动了Tomcat8/9
问题情况如图所示:
原因:没有修改环境变量CATALINA_HOME
如果之前安装过Tomcat 8或者9,那么您应该将环境变量CATALINA_HOME修改为Tomcat 10的路径,或者直接删除CATALINA_HOME环境变量。注意:如果是在Windows的控制台中运行,在修改或删除环境变量后,需要重启控制台才能生效。
控制台乱码修复
在启动Tomcat后,可能会遇到控制台乱码,这个问题在Windows系统下比较常见,而且Tomcat 8 ,Tomcat 9也会回到这个问题。
问题情况如图所示:
原因:Tomcat的默认日志编码与控制台的字符编码不一致。
建议修改Tomcat的日志编码,将conf/logging.properties中的
java.util.logging.ConsoleHandler.encoding = UTF-8
修改为
java.util.logging.ConsoleHandler.encoding = GBK
如需转载,请注明本文的出处:农民工老王的CSDN博客https://blog.csdn.net/monarch91 。
版权归原作者 农民工老王 所有, 如有侵权,请联系我们删除。