当前位置: 首页 > 知识库问答 >
问题:

如何将Spring boot程序部署到Amazon Elastic Beanstalk?

洪哲彦
2023-03-14

我在AWS和Spring框架方面都是新手。

我已经建立了一个简单的网络程序遵循入门指南在Spring网站。另外,我已经使我的弹性豆茎应用程序和环境运行Tomcat8和Java8。我想要的是;

    null

我不明白的是,如果我使用Gradle'build'任务或'boot run'任务,生成的可执行jar文件可以正常工作。但是,如果我通过Gradle'war'任务构建一个war文件并将其放在本地Tomcat上,服务器将产生与AWS相同的HTTP 404错误。

这是我的建筑档案。

    buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.7.RELEASE")
        classpath("org.apache.tomcat:tomcat-catalina:8.0.28")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'war'

jar {
    baseName = 'gs-authenticating-ldap'
    version =  '0.1.0'
}

war {
    baseName = 'gs-authenticating-ldap'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("junit:junit")
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
}

此外,我的程序只有两个Java类:src/main/Java/hello/homeController.Javasrc/main/Java/hello/application.Java

package hello;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @RequestMapping("/")
    public String index() {
        return "Welcome to the home page!";
    }
}
package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

作为总结:

  • 构建“引导运行”->浏览“localhost:8080”:工作正常。
  • 构建'build'->生成'xxx.jar(executable)'->双击以执行此jar->浏览“localhost:8080”:Works fine
  • 构建'build'->生成'xxx.jar(可执行文件)'->上载到AWS->浏览“xx.elasticbeanstalk.com”:HTTP 404错误
  • 构建“war”->生成“xxx.war”->使用IntelliJ在本地Tomcat上运行此war->浏览“localhost:8080”:HTTP 404错误
  • 构建“war”->生成“xxx.war”->上载到AWS->浏览“xx.elasticbeanstalk.com”:HTTP 404错误

我想做的是1)在IntelliJ上开发,2)在Gradle上构建,3)在本地测试,4)上传到AWS上运行。请帮帮我。

如果您有任何进一步的解释或信息,请让我知道。谢了!

共有1个答案

邢雨华
2023-03-14

我也遇到过类似的问题,您需要做的是首先使应用程序类扩展SpringBootServletInitializer:

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

它将使用Spring Framework的Servlet支持初始化应用程序(Tomcat将能够注册Servlet并启动应用程序)。

然后您必须告诉Gradle环境运行时将由应用服务器提供。为此,在依赖项下添加以下行:

dependencies {
    // …
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    // …
}

有关更多信息,请参见关于如何将Spring Boot应用程序部署为WAR的文档:https://docs.Spring.io/Spring-Boot/docs/current/reference/html/howto-tubitional-deployment.html

 类似资料:
  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

  • 我想第一次使用docker发布我在spring boot中制作的应用程序。然而,在发布时出现了一个问题。 因此,我上传到conter的图像不显示。 以下是我采取的步骤,我将立即添加我使用gradle的步骤。 > 我将Docker插件下载到IntelliJ 我创建了一个Dockerfile,其中我放了: 音量 /tmp ARG JAR_文件 在终端中,我键入以下命令来构建项目: chmod 777

  • 我有一个Java web应用程序,在我的jar文件中嵌入了Tomcat。我可以用Docker容器化应用程序,并用命令java-jar-myapp.jar运行它,但我不能在Heroku中运行那个容器。我尝试使用heroku CLI进行dockerize和部署,但heroku给了我一个“无法访问jarfile”的错误。 我试图通过使用heroku deploy:jar部署我的fat jar来解决这个问

  • 我有带pom的spring boot应用程序。xml 所以,我需要构建war并将其部署到websphere上。但部署后,会出现错误消息: 脚本计数=1048576 ************* 结束显示当前环境 ************* [9/20/18 18:35:17:893 MSK] 00000089 ecs Wcom.ibm.ws.ecs.internal.scan.context.imp

  • 我正试图将一个。NET5项目部署到google app engine上,但当我想用。NET5运行时构建时,它似乎有一个问题。