【问题标题】:Spring Boot war giving exception in external tomcatSpring Boot 战争在外部 tomcat 中给出异常
【发布时间】:2021-01-26 13:10:49
【问题描述】:

我在 STS ide 中开发了一个 spring boot 应用程序,我能够毫无例外地与主类一起运行。

@SpringBootApplication
public class Java3Application {
    public static void main(String[] args) {
        SpringApplication.run(Java3Application.class, args);

    }
}

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        setRegisterErrorPageFilter(false);  
        return application.sources(Java3Application.class);
    }
}

我使用下面的插件和打包生成了同一个项目的战争:

<packaging>war</packaging>

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

也有这样的依赖,

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

但是当我的一个休息控制器被击中时,生成的战争给出了空指针异常,但同样适用于 Main 类。 在我的情况下发生了什么?我的战争包装是错误的还是不够的??

【问题讨论】:

    标签: java spring spring-boot maven war


    【解决方案1】:

    要让Spring Boot应用程序在外部tomcat中运行,你必须将它扩展为SpringBootServletInitializer。修改你的代码如下

    @SpringBootApplication
    public class Java3Application extends SpringBootServletInitializer{
        public static void main(String[] args) {
            SpringApplication.run(Java3Application.class, args);
    
        }
    }
    

    【讨论】:

    • 在这种情况下,它似乎不是配置问题。您是否在任何一个特定 API 中看到空指针或所有 API 都在抛出 NPE?
    • 我只有两个 rest 控制器,HttpAdapter 和 HttpNoRespAdapter,它们被另一个应用程序击中。
    • 根据这些信息很难找到根本原因。你能提供你的控制器类,pom.xml 等
    • 好的,我提供 pom.xml 的链接docs.google.com/document/d/…
    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 2015-06-19
    • 2019-03-21
    • 2022-11-10
    • 1970-01-01
    • 2021-01-23
    • 2019-03-23
    • 2019-10-27
    相关资源
    最近更新 更多