2016-12-29 2 views
0

Я пытаюсь использовать Tuckey как urlRewrite в моей загрузки проекта яровой но я получаю ошибку ниже регистрации Tuckey фильтра:org.tuckey.web.filters.urlrewrite.UrlRewriteFilter ОШИБКА: не удалось найти файл urlrewrite конф в urlrewrite.xml

org.tuckey.web.filters.urlrewrite.UrlRewriteFilter ERROR: unable to find urlrewrite conf file at `urlrewrite.xml` even i have `urlrewrite.xml` file under resources. 

зарегистрировать Tucky фильтр, как показано ниже в моем Configuration class:

@Bean 
public FilterRegistrationBean urlRewriteFilterRegistration() throws IOException { 
    log.info("UrlRewriteFilter registered!");  
    FilterRegistrationBean registration = new FilterRegistrationBean(); 
    registration.setFilter(new UrlRewriteFilter()); 
    registration.setName("UrlRewriteFilter"); 
    List<String> urlPatterns = new ArrayList<>(); 
    urlPatterns.add("/urlmap"); 
    registration.setUrlPatterns(urlPatterns); 
    registration.getInitParameters().put("confPath","/urlrewrite.xml"); 
    return registration; 
} 

Даже я использовал для регистрации фильтра, как показано ниже:

FilterRegistration.Dynamic urlRewriteFilter = servletContext.addFilter("urlRewriteFilter", new UrlRewriteFilter()); 
    urlRewriteFilter.setInitParameter("confPath", "urlrewrite.xml"); 
    urlRewriteFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), false, "/*"); 

Он работал в ни одной версии для загрузки! Что случилось с моей конфигурацией.

ответ

1

В том же выпуске недавно. Найдено этот пост с ответом: Spring boot cannot find urlrewrite.xml inside jar file

TL; DR: Созданный класс простирающуюся UrlRewriteFilter и затирает в loadUrlRewriterMethod, чтобы позволить загрузку конфигурации в качестве org.springframework.core.io.Resource

Пожалуйста, адаптироваться к вашим потребностям:

public class BootCompliantUrlRewriteFilter extends UrlRewriteFilter { 

    private Resource resource; 

    public BootCompliantUrlRewriteFilter(Resource config){ 
     this.resource = config; 
    } 

    //Override the loadUrlRewriter method, and write your own implementation 
    @Override 
    protected void loadUrlRewriter(FilterConfig filterConfig) throws ServletException { 
     try { 
      //Create a UrlRewrite Conf object with the injected resource 
      Conf conf = new Conf(filterConfig.getServletContext(), resource.getInputStream(), resource.getFilename(), "@@[email protected]@"); 
      checkConf(conf); 
     } catch (IOException ex) { 
      throw new ServletException("Unable to load URL rewrite configuration file from " + this.resource, ex); 
     } 
    } 
} 

и в классе приложения:

public static final String REWRITE_FILTER_NAME = "rewriteFilter"; 
public static final String REWRITE_FILTER_CONF_PATH = "urlrewrite.xml"; 

@Bean 
public FilterRegistrationBean rewriteFilterConfig() { 
    FilterRegistrationBean reg = new FilterRegistrationBean(); 
    reg.setName(REWRITE_FILTER_NAME); 
    reg.setFilter(new BootCompliantUrlRewriteFilter(new ClassPathResource(REWRITE_FILTER_CONF_PATH))); 

    //reg.addInitParameter("confPath", REWRITE_FILTER_CONF_PATH); 
    reg.addInitParameter("confReloadCheckInterval", "-1"); 
    reg.addInitParameter("statusPath", "/redirect"); 
    reg.addInitParameter("statusEnabledOnHosts", "*"); 
    reg.addInitParameter("logLevel", "WARN"); 
    return reg; 
} 
+0

работал! Awesom :) –