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