UrlRewriteFilter ОШИБКА - PullRequest
       29

UrlRewriteFilter ОШИБКА

1 голос
/ 29 февраля 2012

Я использую maven и помещаю urlrewrite.xml в исходную папку src / main / resources /.Сконфигурируйте web.xml следующим образом:

<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
    <param-name>confPath</param-name> 
    <param-value>classpath:urlrewrite.xml</param-value>             
</init-param>


</filter>

  <filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>

, но получите ошибку: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter ОШИБКА: невозможно найти conf-файл urlrewrite по адресу classpath: urlrewrite.xml.Если я положу его по умолчанию в loc: /WEB-INF/urlrewrite.xml.Оно работает.Но я хочу соответствовать спецификациям maven и поместить все конфигурации в папку ресурсов.

Может ли кто-нибудь помочь мне?Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Используйте это

<init-param>
    <param-name>confPath</param-name>
    <param-value>/WEB-INF/urlrewrite.xml</param-value>
</init-param>

и поместите файл urlrewrite.xml в «WEB-INF» Эта статья содержит инструкции по настройке.

0 голосов
/ 08 марта 2013

Не самое чистое решение в мире, но я смог найти обходной путь. Обратите внимание, что мое приложение основано на пружине:

открытый класс EnhancedUrlRewriteFilter extends UrlRewriteFilter {

private String confPath;

private final Log logger = LogFactory.getLog (getClass ());

@Override
public void init(FilterConfig filterConfig) throws ServletException {
    String confPathStr = filterConfig.getInitParameter("confPath");
    confPath = StringUtils.trim(confPathStr);
    super.init (filterConfig);
}

@Override
protected void loadUrlRewriter (FilterConfig aFilterConfig) throws ServletException {

    try {  
        configure (aFilterConfig.getServletContext ());
    }
    catch (Throwable e) {
        throw new IllegalArgumentException (e);
    }

}

private void configure (ServletContext context) throws IOException {

    ResourceLoader webApplicationContext = WebApplicationContextUtils.getWebApplicationContext (context);

    Resource resource = webApplicationContext.getResource (confPath);

    logger.debug ("Loaded urlrewrite.xml from " + resource.getFilename ());

    InputStream inputStream = resource.getInputStream();

    URL confUrl = null;

    try {
        confUrl = context.getResource(confPath);
    } catch (MalformedURLException e) {
        logger.debug(e);
    }

    String confUrlStr = null;
    if (confUrl != null) {
        confUrlStr = confUrl.toString();
    }

    if (inputStream != null) {
        Conf conf = new Conf(context, inputStream, confPath, confUrlStr, false);
        checkConf(conf);
    }
}

}

и в моем web.xml:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>EnhancedUrlRewriteFilter</filter-class>
    <init-param>
        <param-name>confPath</param-name>
        <param-value>classpath:urlrewrite.xml</param-value>
    </init-param>
    <init-param>
        <param-name>logLevel</param-name>
        <param-value>WARN</param-value>
    </init-param>
</filter>
...