在模块化Java项目中使用嵌入式Tomcat可以实现将应用程序打包成一个可执行的JAR文件,方便部署和运行。以下是详细的步骤:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.54</version>
</dependency>
org.springframework.boot.SpringApplicationRunListener
接口,并在starting()
方法中创建并启动Tomcat服务器。以下是一个示例:import org.apache.catalina.Context;
import org.apache.catalina.startup.Tomcat;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class EmbeddedTomcatApplication {
public static void main(String[] args) {
SpringApplication.run(EmbeddedTomcatApplication.class, args);
}
@Bean
public TomcatServletWebServerFactory tomcatFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatWebServer(tomcat);
}
@Override
protected void prepareContext(Context context, ServletContextInitializer[] initializers) {
super.prepareContext(context, initializers);
context.addServletContainerInitializer((servletContext) -> {
// 在这里添加你的Servlet、Filter、Listener等组件
}, null);
}
};
}
}
@WebServlet
注解来声明一个Servlet:import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.getWriter().write("Hello, World!");
}
}
mvn clean package
java -jar target/myproject.jar
http://localhost:8080/hello
来测试你的应用程序。嵌入式Tomcat服务器将会监听8080端口,并将请求转发给你的Servlet。总结:在模块化Java项目中使用嵌入式Tomcat可以方便地将应用程序打包成可执行的JAR文件,并通过嵌入式Tomcat服务器来运行。这种方式适用于小型的、独立的Java应用程序,可以简化部署和运维的过程。腾讯云提供了云原生应用托管服务,可以帮助你更方便地部署和管理Java应用程序,具体详情请参考腾讯云云原生应用托管产品介绍:https://cloud.tencent.com/product/tke。
领取专属 10元无门槛券
手把手带您无忧上云