簡體   English   中英

Spring Boot多個Servlet錯誤

[英]Spring Boot multiple servlets error

我的Spring Boot應用程序中有兩個servlet,它們通過uri映射,一個映射到/ local / *到DispatcherServlet,另一個/ *映射到VaadinServlet,但是當我嘗試僅通過/ local / blabla訪問某個東西時,也調用了VaadinServlet。

在我的JBoss應用程序中不會發生這種情況,我需要在Spring Boot中設置任何配置嗎?

我注意到的另一個問題是為什么要映射到“ /”? 我可以禁用它嗎,因為我不需要使用此uri。

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

@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;
}
LOG
 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] ossweb.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] ossweb.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] osbceServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/local/*] 2015-06-09 18:24:17.763 INFO 5344 --- [ main] osbceServletRegistrationBean : Mapping servlet: 'springVaadinServlet' to [/*] 2015-06-09 18:24:17.763 INFO 5344 --- [ main] osbceServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2015-06-09 18:24:17.763 INFO 5344 --- [ main] osbceServletRegistrationBean : Servlet dispatcherServlet was not registered (possibly already registered?) 2015-06-09 18:24:17.763 INFO 5344 --- [ main] osbcembedded.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2015-06-09 18:24:17.779 INFO 5344 --- [ main] osbcembedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2015-06-09 18:24:17.779 INFO 5344 --- [ main] osbcembedded.FilterRegistrationBean : Mapping filter: 'openEntityManagerInViewFilter' to: [/*] 2015-06-09 18:24:17.779 INFO 5344 --- [ main] osbcembedded.FilterRegistrationBean : Mapping filter: 'springSecurityFilterChain' to: [/*] 

我發現我可以通過屬性文件向DispatcherServlet提供詳細信息:

server.servlet路徑= /本地/ *

卜如果要禁用DispatcherServlet,有什么辦法嗎?

我相信您需要通過創建一個與dispatcherServlet同名的bean來覆蓋默認的dispatcherServlet。 leveluplunch網站上的教程中,我發現了以下內容:

@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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM