티스토리 뷰
문제점:
**프로젝트를 tomcat 7 에 배포를 해보면 태그라이브러리 tld파일을 찾지 못하는 에러가 남
현재 태그라이브러리는 /WEB-INF/classes/taglibs.tld 에 존재
원인:
tomcat7으로 바뀌면서 이전과 달리 /WEB-INF/classes/ 와 /WEB-INF/lib 디렉토리에서 tld 파일을 스캔하지 않음
이렇게 바뀐 이유
a) make TLD scanning consistent between Catalina & Jasper
b) provide the extension points required by the Virgo project for OSGI RFC66
카탈리나 톰켓엔진과 재스퍼 jsp엔진사이에 tld 스캐닝하는 방법을 동일하게 맞추기 위해서라네요.
정리:
tomcat7이 tld를 찾는 곳은 아래와 같습니다.
1. TLDs declared in web.xml
2. TLDs found in WEB-INF/ and subdirectories (excluding WEB-INF/lib/ and WEB-INF/classes/)
3. TLDs from regular jar files discovered in WEB-INF/lib/
4. ClassLoader scanning
해결책: 쉬운 방법 순으로
1. tld 파일을 /WEB-INF/ 디렉토리 밑으로 옮긴다 :)
2. web.xml에 tld 파일의 위치를 기술한다.
<jsp-config>
<taglib>
<taglib-uri>
http://xxxx.xxx.com/taglibs
</taglib-uri>
<taglib-location>
/WEB-INF/classes/taglibs.tld
</taglib-location>
</taglib>
</jsp-config>
3. jar scanner를 커스텀 구현해서 지정한다.
http://tomcat.apache.org/tomcat-7.0-doc/config/jar-scanner.html
참고 url
https://issues.apache.org/bugzilla/show_bug.cgi?id=50838
https://issues.apache.org/bugzilla/show_bug.cgi?id=47834
http://grokbase.com/t/tomcat/users/112qr2kq35/upgrading-from-tomcat-6-0-29-to-7-0-8-tld-scanned-location-problem
http://wiki.metawerx.net/wiki/Web.xml.TagLib
http://wiki.metawerx.net/wiki/RemovingTaglibFromWeb.xml
http://stackoverflow.com/questions/226514/declare-jsp-taglib-directives-in-web-xml
http://www.coderanch.com/t/58157/Struts/add-taglib-element-web-xml