Я создаю веб-приложение с Spring MVC и ZK framework. У меня есть проект root (jar) со всей базовой конфигурацией spring и zk и проект веб-приложения (war), вызывающий инициализатор.WebApplicationInitializer называется дважды
Это мой Initializer в моем корневом проекте
public class DefaultInitializer implements WebApplicationInitializer {
private Class<?> config;
public void onStartup(ServletContext container) throws ServletException {
init();
// Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(config);
// Manage the lifecycle of the root application context
container.addListener(new ContextLoaderListener(rootContext));
container.addListener(new RequestContextListener());
container.addListener(new HttpSessionListener());
// Register and map the dispatcher servlet
ServletRegistration.Dynamic dispatcher = container.addServlet(
"mvc", new DispatcherServlet(rootContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
ServletRegistration.Dynamic zkDispatcher = container.addServlet(
"zkLoader", new DHtmlLayoutServlet());
zkDispatcher.setLoadOnStartup(2);
zkDispatcher.setInitParameter("update-uri", "/zkau");
zkDispatcher.addMapping("*.zul");
zkDispatcher.addMapping("*.zhtml");
zkDispatcher.addMapping("/zk/*");
ServletRegistration.Dynamic zkUpdater = container.addServlet(
"auEngine", new DHtmlUpdateServlet());
zkUpdater.setLoadOnStartup(3);
zkUpdater.addMapping("/zkau/*");
}
protected void setConfig(Class<?> config) {
this.config = config;
}
protected void init() {
setConfig(BaseConfig.class);
}
}
Так что в моем WebAPP проекте я только должен сделать
public class Initializer extends DefaultInitializer {
@Override
public void init() {
setConfig(WebConfig.class);
}
}
где WebConfig является конфиг ComponentScan и EnableWebMvc Java.
Проблема заключается в том, что я запускаю свой сервер с помощью веб-приложения. OnStartup вызывается дважды, а затем он генерирует исключение NullPointerException.
У меня есть только один web.xml, и я регистрирую только один DispatcherServlet, и в моем поместье импортируется только один источник spring-web.jar.
Я использую Spring 4, Java 1.8 и Tomcat v.8
Может кто-нибудь дать мне подсказку, что происходит?
Спасибо,
J.
У кого-нибудь есть подсказка? – jpadilladev