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

在tomcat上部署Spring Boot WAR文件显示错误404

梅宏盛
2023-03-14

我尝试在独立的Tomcat7.0.91上部署Gradle+Spring Boot2+Angular2应用程序WAR文件。如果我用提供的jar和嵌入的tomcat引导应用程序,一切正常,但是当我在独立容器上部署时,当我转到“/springboot”上下文时,它给我404:“源服务器没有找到目标资源的当前表示,或者不愿意公开存在的表示。”来自tomcat的日志没有显示任何有用的信息。通过在server.xml上下文路径和文档库中设置,我尝试了两种部署方法:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/springboot" docBase="/home/user/SideProjects/springboot-angular2-gradle-war/build/libs"/>                                                     
</Host>

其次是在webapps目录中“手工”部署war文件。

 buildscript {
    ext {
        springBootVersion = '2.0.5.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'

apply plugin: 'application'
mainClassName = "com.demo.SpringbootAngular2GradleWarApplication"

group = 'com.demo'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

war {
    baseName = "demo-spring"
}

repositories {
    mavenCentral()
}

configurations {
    providedRuntime
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}


def frontendDir = "$projectDir/src/main/frontend"
def frontDistDir = "$frontendDir/dist"

sourceSets {
    main {
        resources {
            srcDirs = ["$frontDistDir", "$projectDir/src/main/resources"]
        }
    }
}

clean.doFirst {
    delete "$frontDistDir"
    println "$frontDistDir - cleaned"
}

task buildAngular(type: Exec) {
    workingDir "$frontendDir"
    inputs.dir "$frontendDir"
    commandLine "npm", "run-script", "build"
}

processResources.dependsOn "buildAngular"

Main类扩展servlet初始值设定项:

 package com.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class SpringbootAngular2GradleWarApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootAngular2GradleWarApplication.class);
    }

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

共有1个答案

柳奇希
2023-03-14

问题是版本不兼容,SpringBoot-2支持的最小Tomcat版本是8.5.x,以便el-api和更多版本。实际上,在webapps中删除war并将其“手工”重命名是有效的。

 类似资料:
  • 这是我在stackoverflow中的第一个问题!WOW:) 在这个问题上,我简直不知所措:(我有一个简单的helloworld Web服务,构建WAR文件并将其部署在本地主机上的tomcat(8.0.35)上。明确地说:我刚刚写了一个类,用@WebService注释;然后我写了网络。xml和sun jaxws。xml;我什么都没做!这足以让该类成为Web服务吗?我是否错过了另一步? 问题:网址:

  • 我正在尝试将json报告文件推送到Nexus Repo。我让詹金斯的工作 mvn-x-e deploy:deploy-file“-dgeneratePom=true”-durl=http://repo_location“-drepositoryid=internal-repository”-dgroupid=com.devsys“-dartifactid=report”-dbuild.number

  • 应用程序构建并部署,index.html页面在重定向到login.xhtml页面之前显示,问题开始了,login.xhtml页面显示空白,视图源也做同样的事情。任何帮助都将不胜感激。 下面是我的web.xml文件 下面是我的pom.xml依赖 这是我的脸。xml

  • 数据库为:MSSQL 2008 R2 OS=Windows Server 2008 R2 错误日志为: 2014年3月12日下午5:19:53 org.apache.catalina.realm.UserDatabaseRealm开始内部严重:异常查找键UserDatabase javax.naming.NameNotFoundException:Name[UserDatabase]下的UserD

  • 在tomcat服务器上部署war文件时获取以下日志 严重[localhost-startStop-1]组织。springframework。网状物上下文上下文加载器。initWebApplicationContext上下文初始化失败。lang.RuntimeException:com上没有可用的配置目录。数据力学。经理启动。WebApplicationContext。在org上加载BeanDefi

  • 我正在使用Grails框架,当我创建一个war文件并将其部署到Tomcat-7上时,我得到了以下错误。但有时部署会成功。 2016年7月29日上午10:19:23org.apache.catalina.core.标准上下文启动内部严重:错误listenerStart 2016年7月29日上午10:19:23org.apache.catalina.core.标准上下文启动内部严重:上下文[]由于之前