Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring org.tuckey.web.filters.urlrewrite.UrlRewriteFilter错误:在urlrewrite.xml上找不到urlrewrite conf文件_Spring_Spring Boot_Tuckey Urlrewrite Filter - Fatal编程技术网

Spring org.tuckey.web.filters.urlrewrite.UrlRewriteFilter错误:在urlrewrite.xml上找不到urlrewrite conf文件

Spring org.tuckey.web.filters.urlrewrite.UrlRewriteFilter错误:在urlrewrite.xml上找不到urlrewrite conf文件,spring,spring-boot,tuckey-urlrewrite-filter,Spring,Spring Boot,Tuckey Urlrewrite Filter,我试图在我的spring boot项目中使用Tuckey作为URLRewite,但在注册Tuckey过滤器下面出现错误: 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过滤器,如下所

我试图在我的spring boot项目中使用
Tuckey
作为URLRewite,但在注册
Tuckey
过滤器下面出现错误:

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过滤器,如下所示:

@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;
}
它在无启动版本下工作!
我的配置有什么问题。

最近也有同样的问题。 找到此帖子并给出答案:

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(), "@@yourOwnSystemId@@");
            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;
}
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;
}