gpt4 book ai didi

tomcat - Spring Boot War 文件在 ec2 上获取 404

转载 作者:行者123 更新时间:2023-11-28 21:54:15 24 4
gpt4 key购买 nike

我整理了一个简单的 Eclipse Spring Boot Rest 程序。只是几个返回一些字符串的端点。我正在使用 Eclipse Gradle 插件构建它。没问题,它在 Eclipse 提供的 Tomcat 实例中运行良好。我还在 native Windows Tomcat 上运行它。我使用部署功能使用 tomcat Web 应用程序管理器部署了 .war 文件。运行良好。然后我部署了一个 ec2 ubuntu 实例并再次使用 tomcat web 应用程序管理器并上传 .war 文件。其余程序在应用程序窗口中正确显示,但不会运行。我使用了以下 URL,

http://ec2-IP-Address/demo-0.0.1-SNAPSHOT/hello

我不断收到 404。我非常确定 tomcat 部署和 ec2 环境看起来是正确的,因为我可以在 ec2 实例中毫无问题地运行 tomcat7-examples。任何帮助将不胜感激。

AwsElbRestServerAApplication.java 文件:

package demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@SpringBootApplication
public class AwsElbRestServerAApplication {

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

ServletInitializer.java 文件:

package demo

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(AwsElbRestServerAApplication.class);
}
}

RestController.java 文件:

package demo

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class RestController {

@RequestMapping("/hello")
public @ResponseBody String hello() {

return "Greetings from Server A";
}

@RequestMapping("/heartbeat")
public @ResponseBody String heartbeat() {

return "Server A is still running";
}
}

build.gradle 文件:

buildscript {
ext {
springBootVersion = '1.2.4.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle
plugin:${springBootVersion}")
classpath("io.spring.gradle:dependency-management
Plugin:0.5.1.RELEASE")
}
}

apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'

war {
baseName = 'demo'
version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
jcenter()
maven { url "http://repo.spring.io/libs-snapshot" }
}

configurations {
providedRuntime
}

dependencies {
compile("org.springframework.boot:spring-boot-starter-actuator")
compile("org.springframework.boot:spring-boot-starter-remote-shell")
compile("org.springframework.boot:spring-boot-starter-web")
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
testCompile("org.springframework.boot:spring-boot-starter-test")
}

eclipse {
classpath {
containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
containers 'org.eclipse.jdt.launching.JRE_CONTAINER/
org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/
JavaSE-1.8'
}
}

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

最佳答案

我回答过类似的问题here .

您正在 Java 1.7 JRE 下运行您的外部 tomcat,同时针对 1.8 编译了您的代码。

奇怪的是,没有错误,应用程序出现在管理器应用程序中,但是当您尝试访问它时,您会收到 404。

确认这一点的一种方法是查看您的 tomcat 日志输出,您不会看到 Spring Boot 横幅。

要解决此问题,您可以针对 Java 1.7 编译代码。

关于tomcat - Spring Boot War 文件在 ec2 上获取 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30929098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com