1

この例に従って、Spring のWebApplicationInitializer-->を使用して Java を介して DispatcherServlet を構成しましたjavax.servlet.ServletContainerInitializer

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
    mvcContext.register(MyConfiguration.class);

    ServletRegistration.Dynamic appServlet = servletContext.addServlet("appServlet", new DispatcherServlet(mvcContext));
    appServlet.setLoadOnStartup(1);

    Set<String> mappingConflicts = appServlet.addMapping("/");
    if (!mappingConflicts.isEmpty()) {
        for (String s : mappingConflicts) {
            LOGGER.error("Servlet URL mapping conflict: {}", s);
        }
        throw new IllegalStateException("'appServlet' cannot be mapped to '/'");
    }
}   

Tomcatを起動すると、明らかにサーブレットがすでにマッピングされているようで、それがTomcatのデフォルトのサーブレットであるとしか思えないIllegalStateExceptionため、上記のメッセージが表示されます。mappingConflicts を無視すると、何にもマップされません。/DispatcherServlet

このデフォルトのサーブレット マッピングを自分のものでオーバーライドする方法はありますDispatcherServlet/*?

この回答は、アプリケーションが Catalina webapps フォルダーにデプロイされる場所を変更することで解決策を提供しますが、私は邪魔にならないものを望んでいました。

4

1 に答える 1

0

したがって、JavaDispatcherServletを介してマップまたは他のサーブレットをマップできる/ことがわかります(常にこれを実行できるxmlとは対照的に)が、Tomcatバージョン> 7.0.14でのみ、私は7.0.12でした。

議論については、この Bugzilla の問題を参照してください。

于 2013-02-22T16:44:15.110 に答える