2012-02-29 4 views
1

나는 maven을 사용하고 있으며 urlrewrite.xml을 소스 폴더 src/main/resources /에 두었습니다. 이런 식의 web.xml을 구성UrlRewriteFilter ERROR

<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 오류 : urlrewrite.xml : 클래스 경로에서 urlrewrite의 conf 파일을 찾을 수 없습니다. 기본 loc : /WEB-INF/urlrewrite.xml에 입력하면됩니다. 그것은 작동합니다. 하지만 maven 사양을 준수하고 모든 구성을 resources 폴더 아래에 넣고 싶습니다.

친절하게 도와 줄 수 있습니까? 감사.

답변

2

사용 'WEB-INF' This article 안쪽이

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

및 넣어 urlrewrite.xml 파일은 설치 방법이 있습니다.

+0

나는 다른에 넣어 수 :

공용 클래스 EnhancedUrlRewriteFilter이 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 파일에

장소? confPath param의 사용법은 무엇입니까? –

+0

이 문제가 해결되었음을 알았습니다. http://code.google.com/p/urlrewritefilter/issues/detail?id=28 필터에 따르면 먼저 필터가 서블릿 컨텍스트에서 필터를로드하려고 시도합니다. 을 찾을 수 없으면 시스템의 클래스 로더에서로드하려고 시도합니다. – tusar

+0

나는 본다. 내 자신의 UrlRewriteFilter 구현하여이 문제를 해결하기 위해 노력하지만 너무 많은 종속성을 가진 것 같다. 그래서 나는 포기한다. 컨텍스트 경로를 대신 사용해야합니다. 매우 감사합니다. –

0

세계에서 가장 깨끗한 해결책은 아니지만 해결 방법을 찾을 수있었습니다. 내 응용 프로그램이 스프링을 기반으로합니다 :

<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> 
관련 문제