首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring多个servlet错误

Spring多个servlet错误
EN

Stack Overflow用户
提问于 2015-06-09 20:57:23
回答 2查看 3.7K关注 0票数 1

我的Spring应用程序中有两个servlet,它们通过uri映射,一个映射到/local/*到DispatcherServlet,另一个/*映射到VaadinServlet,但是当我试图访问/local/blabla上的某个内容时,VaadinServlet也会被调用。

在我的JBoss应用程序中,这种情况不会发生,在Spring中是否需要设置任何配置?

我注意到的另一个问题是为什么会有到'/‘的映射?我可以禁用它吗,因为我不需要使用这个uri。

例如:https://localhost:9043/test/local/userRemote

代码语言:javascript
运行
复制
@Bean
public ServletRegistrationBean vaadinServletRegistrationBean() {
    final ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new SpringVaadinServlet(),
            "/*");
    servletRegistrationBean.setOrder(10);
    return servletRegistrationBean;
}

@Bean
public ServletRegistrationBean servletRegistrationBean(final DispatcherServlet dispatcherServlet) {
    final ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet);
    servletRegistrationBean.addUrlMappings("/local/*");
    servletRegistrationBean.setOrder(5);

    return servletRegistrationBean;
}

日志

代码语言:javascript
运行
复制
015-06-09 18:24:15.063  INFO 5344 --- [           main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'portalPersistenceUnit'
2015-06-09 18:24:17.700  INFO 5344 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/local/*'], [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@615c6a, org.springframework.security.web.context.SecurityContextPersistenceFilter@1060020, org.springframework.security.web.header.HeaderWriterFilter@6a5659, org.springframework.security.web.authentication.logout.LogoutFilter@261998, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3b6765, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@a72925, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@62c887, org.springframework.security.web.session.SessionManagementFilter@fabf06, org.springframework.security.web.access.ExceptionTranslationFilter@19a2203, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@ab398b]
2015-06-09 18:24:17.701  INFO 5344 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: org.springframework.security.web.util.matcher.AnyRequestMatcher@1, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1c5d1f, org.springframework.security.web.context.SecurityContextPersistenceFilter@47637c, org.springframework.security.web.header.HeaderWriterFilter@18ab988, org.springframework.security.web.authentication.logout.LogoutFilter@12afc39, org.springframework.security.web.authentication.logout.LogoutFilter@1df7359, org.jasig.cas.client.session.SingleSignOutFilter@2498a3, org.springframework.security.cas.web.CasAuthenticationFilter@c2f767, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6f0f70, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@53ac0c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7ab205, org.springframework.security.web.session.SessionManagementFilter@c475ba, org.springframework.security.web.access.ExceptionTranslationFilter@59c3ff, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@14f2020]
2015-06-09 18:24:17.763  INFO 5344 --- [           main] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/local/*]
2015-06-09 18:24:17.763  INFO 5344 --- [           main] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'springVaadinServlet' to [/*]
2015-06-09 18:24:17.763  INFO 5344 --- [           main] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2015-06-09 18:24:17.763  INFO 5344 --- [           main] o.s.b.c.e.ServletRegistrationBean        : Servlet dispatcherServlet was not registered (possibly already registered?)
2015-06-09 18:24:17.763  INFO 5344 --- [           main] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2015-06-09 18:24:17.779  INFO 5344 --- [           main] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2015-06-09 18:24:17.779  INFO 5344 --- [           main] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'openEntityManagerInViewFilter' to: [/*]
2015-06-09 18:24:17.779  INFO 5344 --- [           main] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'springSecurityFilterChain' to: [/*]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-09 21:40:54

我发现我可以通过属性文件向DispatcherServlet提供详细信息:

server.servlet-path=/local/*

如果想要禁用DispatcherServlet,有什么办法吗?

票数 0
EN

Stack Overflow用户

发布于 2015-07-30 19:13:54

我相信您需要通过创建一个与dispatcherServlet同名的bean来覆盖默认的dispatcherServlet。在关于水准网站的教程中,我发现了以下内容:

代码语言:javascript
运行
复制
@Bean
public DispatcherServlet dispatcherServlet() {
    return new DispatcherServlet();
}

/**
 * Register dispatcherServlet programmatically 
 * 
 * @return ServletRegistrationBean
 */
@Bean
public ServletRegistrationBean dispatcherServletRegistration() {

    ServletRegistrationBean registration = new ServletRegistrationBean(
        dispatcherServlet(), "/levelup/*");
    registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);

    return registration;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30742682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档