嵌入式tomcat的Spring启动应用程序

时间:2017-05-21 19:03:38

标签: java spring-mvc tomcat spring-boot amazon-ec2

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

4 个答案:

答案 0 :(得分:4)

建议为spring boot应用程序构建jar文件。这个jar里面包含嵌入式tomcat。但是当然你也可以把它建成战争文件。要让它们都运行,您只需运行<!DOCTYPE html> <html> <body> <h1>My first PHP page</h1> <?php echo "Hello World!"; ?> </body> </html> java -jar your-jar-file.jar

即可

答案 1 :(得分:3)

只需在你的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。

答案 2 :(得分:1)

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

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

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

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

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

答案 3 :(得分:0)

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

然后:

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

如果未设置路径,则要做的是: 示例:

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

-可以100%工作-签出

感谢:)