是否可以将 Spring MVC 网络应用程序 运行 作为 "standalone executable" 并嵌入 Java 和 Tomcat?

Is it possible to make a Spring MVC web app run as a "standalone executable" with Java and Tomcat embedded?

我有一个使用 Java、Spring MVC 和 JDBC 构建的网络应用程序。结果是 WAR 文件。

到运行它,用户必须安装Java8JDK和Tomcat,并将WAR文件部署到Tomcat 服务器.

如果他们可以将一个文件 运行 作为独立应用程序下载,那就太好了。

即 运行“WAR 文件”,只需浏览到 http://localhost:8080/myapp

此外,在 Windows 上将其设置为服务器会很棒(就像 Tomcat 是与安装程序一起安装时)。

有什么办法吗?也许用 Spring 引导或类似的新东西?

是的。您可以使用 spring 引导来实现您的结果。请参考下面的 link 示例代码 https://mkyong.com/spring-boot/spring-boot-hello-world-example-jsp/

是的,Spring引导是正确的选择。 它允许您构建一个包含所有依赖项和嵌入的 Tomcat(默认情况下,可以更改)的可执行 Jar。 但是用户仍然需要下载一个 JRE 来执行 Jar,如果需要的话还需要一个数据库,但是你可以使用嵌入式数据库,比如 H2、HSQLDB...,这取决于你的需要。

您可以通过 Maven 使用嵌入式 Jetty 服务器,但这需要您设置一些您的应用程序并且可能与您现有的应用程序保持一致,请查看此 article 了解更多信息。

Jetty在运行spring应用方面与tomcat服务器类似,在开发方面没有太大区别。 Tomcat只是更有名。

其他人所说的其他选择是将您的应用程序迁移到 spring 启动,如果您已经用 spring 编写了应用程序,这将很容易(但这取决于您拥有多少代码以及如何你有很多时间)