繁体   English   中英

带有嵌入式 tomcat 的 Spring Boot 应用程序

[英]Spring boot app with Embedded tomcat

我正在做一个项目,我们正在使用 Spring-Boot、STS。 我只是通过右键单击 main 来启动项目并作为 Spring Boot 应用程序运行,它只是运行。 现在我被要求在其他机器(如 Amazon EC2 实例)上使用嵌入式 tomcat 运行它。 在普通的 spring 项目中,我以前做的是,创建一个 war 文件,放在 tomcat->webapps 文件夹中,然后从 bin 启动它。 如果是嵌入式 tomcat,我将如何在没有 tomcat 的情况下运行我的应用程序。 我的战争(包括嵌入式 tomcat 依赖项)将在哪里运行? 请提出一些解决方案,这是第一次使用 spring boot 和嵌入式 tomcat。 感谢您的建议。

只需在你的pom或gradle build中引入Spring引导tomcat启动器。 这将把所有tomcat依赖项带到你的app jar。 嵌入式tomcat意味着在JVM中的运行时Spring启动启动服务器,其中包含jar中的依赖项。 因此消除了将战争推送到tomcat文件夹并重新启动的所有问题。 使用Spring启动插件构建jar。 mvn spring-boot:运行或gradle bootRun,然后运行这个jar作为任何可执行jar。

java -jar your-app.jar

这称为Spring Boot Main类。 在内部启动服务器并创建应用程序上下文。 这适用于所有平台,您的本地或EC2。

建议为spring boot应用程序构建jar文件。 这个jar里面包含嵌入式tomcat。 但是当然你也可以把它建成战争文件。 要运行它们,您只需运行java -jar your-jar-file.jarjava -jar your-war-file.war

首先,让我在现代java Web应用程序开发的背景下澄清warjar

在遥远的过去,应用程序被编写,打包成.war文件并部署到运行在某些操作系统(如Linux)上的tomcat服务器上。 通常这些应用程序很大并且反映了某些service的整个业务逻辑,如库站点,它完全依赖于这一个应用程序,它通过为每个应用程序生成适合的响应来处理请求。

随着时间的推移,网络变得更大: More users + more data + stronger computers = more traffic 很难保持这种应用程序开发模式,因为它无法在高吞吐量流量下可靠地提供服务。

那怎么微服务诞生了。 长话短说:在Java中,构建微服务的最佳方式是使用spring-boot ,部署微服务的最佳方法是为每个微服务使用嵌入式服务器,如tomcat 然后,这些微服务理想地部署到云(如AWS )。 云服务知道如何处理jars因为罐子是原生的。

现在,对于你的问题,你的战争将在哪里进行? 你的战争不会开始。 你的jar将由云服务执行,因为它有一个嵌入式的tomcat依赖,它将运行tomcat,它将监听默认端口8080 这将是您构建的应用程序的入口。 云服务可能会为您的应用程序分配一些DNS ,您将能够以这种方式与It的嵌入式tomcat进行通信。

使用您正在使用的IDE将其转换为jar。

然后 :

在Windows上,您必须在环境变量中设置java.exe(带完整路径)(变量name = java)。 然后你可以运行 java -jar "jar name with the full path"

如果未设置path,那么您需要做的是:示例:

"C:\Program Files\Java\jdk1.7.0_67\bin\java.exe" -jar "jar name with the full path"

- 它将100%工作 - 检查出来

谢谢:)

当我的所有视图(jsp)都在 webapp/web-inf/jsp 中时,也遇到了作为 jar 部署的问题。 我的理解是,只有战争包装才会包含 webapp。 当您部署为 jar 时,视图应该如何在 spring boot 中构建?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM