undertowServer不回调ServletContainerInitial

回调代码

package com.litongjava.jfinal.spring.xml;
import java.util.Set;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class SpringServletContainerInitializer implements ServletContainerInitializer {
  @Override
  public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
    log.info("回调成功");
  }
}

启动类

package com.litongjava.jfinal.spring.xml;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.server.undertow.UndertowServer;
import com.jfinal.template.Engine;
public class AppConfig extends JFinalConfig {
  public static void main(String[] args) {
    long start = System.currentTimeMillis();
    UndertowServer.create(AppConfig.class, "undertow.txt").start();
    long end = System.currentTimeMillis();
    System.out.println((end - start) + "ms");
  }
  public void configConstant(Constants me) {
    me.setDevMode(true);
  }
  public void configRoute(Routes me) {
  }
  public void configEngine(Engine me) {
  }
  public void configPlugin(Plugins me) {
  }
  public void configInterceptor(Interceptors me) {
  }
  public void configHandler(Handlers me) {
  }
}

本来以为UndertowServer启动成功后会回调ServletContainerInitializer 的onStartup但是发现并没有回调成功,

原因是什么?


评论区

JFinal

2020-09-11 09:51

SpringServletContainerInitializer 是否需要一个注册机制? 例如像 Servlet 一样在 web.xml 中的注册

李通

2020-09-11 10:02

registernet

2020-09-13 15:56

UndertowServer.create(AppConfig.class, "undertow.txt")
.onDeploy((x,y)-> {
y.addServletContainerInitializer(new ServletContainerInitializerInfo(SpringServletContainerInitializer.class, null));
}.start();

registernet

2020-09-13 15:58

Undertow官方建议用ServletExtension,而不是ServletContainerInitializer