tomcat 10 部署 web项目
建立一个 Servlet 工程 servlet-sample
引入依赖:
# tomcat10 已经将java包重命名了!!
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
简单 的 servlet:
@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
private String message;
@Override
public void init() {
message = "Hello World!";
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
// Hello
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>" + message + "</h1>");
out.println("</body></html>");
}
}
启动访问: http://localhost:8080/hello-servlet
, 返回 Hello World!
tomcat10 发布war 包
war 包准备
首先将 servlet 工程打包: servlet-sample.war
tomcat10 源码中 catalina 默认的 配置目录是当前路径:
那如何指定catalina 目录呢
指定catalina 目录
首先在启动项 jvm 参数加上 -Dcatalina.home="/xxx/tomcat/home"
, 其中 tomcat/home
就是我们新指定的 catalina 目录
- 在 home 目录下创建 conf 用来放 catalina 的配置文件,如 server.xml, catalina.properties 文件,这两个文件是必须的
- 在 home 目录创建 webapps 目录, 用来放 web 的 war 包,或者 web 工程的 class文件
其中 catalina.properties 直接,catalina.policy, server.xml 文件直接从原来的 conf 目录直接 copy 就行,然后在 sever.xml 上配置我们要启动的web项目
server.xml 配置web
在 server.xml 中删除一些不必要的参数:
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/servlet-sample" docBase="servlet-sample.war" debug="0" privileged="true" reloadable="true"/>
</Host>
</Engine>
</Service>
</Server>
- path: 工程前缀
- doBase: 项目,如 这里的
servlet-sample.war
启动 tomcat
>>>>>>>>>>>>>>>>>>>>>>>>>>>> StandardEngine start...
>>>>>>>>>>>>>>> StandardHost start...localhost
>>>>>>>>>>>>>>>>>>>> StandardContext start..../servlet-sample
Mar 31, 2022 8:14:58 AM org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
INFO: No global web.xml found
>>>>>>>>>>>>>>>> StandardWrapper start...helloServlet
Mar 31, 2022 8:15:00 AM org.apache.jasper.servlet.TldScanner scanJars
Mar 31, 2022 8:15:00 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Mar 31, 2022 8:15:00 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in [1351] milliseconds
启动成功, 访问 : http://localhost:8080/servlet-sample/hello-servlet
, 可以正常访问
good luck!