Spring 在 TomEE Plus 上启动应用程序不是 运行

Spring Boot application not running on TomEE Plus

我有一个 spring 引导应用程序,我正试图将其部署到 TomEE Plus 服务器上。该应用程序与嵌入式 Tomcat 服务器和 Tomcat 9.0.43 设置完美配合。 我将部署文件复制到 TomEE webapps 文件夹中,启动服务器,然后……什么都没有。

我没有看到通常的 Spring 引导启动徽标,TOMEE 似乎只是跳过了 spring 引导应用程序。 相反,我收到以下错误(为清楚起见已缩短):

java.lang.IllegalStateException: Error starting child
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:720)
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:706)
     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1133)
...
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/MyApp]]
     at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
     ... 37 more
Caused by: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TryCatchFinally
     at java.lang.ClassLoader.defineClass1(Native Method)
     at java.lang.ClassLoader.defineClass(Unknown Source)
     at java.security.SecureClassLoader.defineClass(Unknown Source)
...
Caused by: java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.TryCatchFinally
     at java.net.URLClassLoader.findClass(Unknown Source)
     at java.lang.ClassLoader.loadClass(Unknown Source)
     at java.lang.ClassLoader.loadClass(Unknown Source)
     ... 73 more

我的 Tomcat 配置如下:Apache Tomcat (TomEE)/9.0.39 (8.0.5) 运行 on Windows 10 with JVM 1.8。 0_281-b09 来自 Oracle

原来它在Tomcat中不起作用,它只在嵌入式服务器中起作用。

我在 Servlet Initializer 中缺少配置方法

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

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

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