【发布时间】:2016-09-03 02:46:17
【问题描述】:
我正在使用 Spring MVC 和 ZK 框架创建一个网络应用程序。我有一个包含 spring 和 zk 的所有基本配置的根项目(jar),以及一个调用初始化程序的 web 应用程序项目(war)。
这是我根项目中的初始化程序
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,在我的pom中只导入了一个spring-web.jar。
我正在使用 Spring 4、Java 1.8 和 Tomcat v.8
谁能告诉我发生了什么?
谢谢,
J.
【问题讨论】:
标签: java spring spring-mvc tomcat