2012-08-22 2 views
1

jsp 사용자 정의 태그를 사용하는 웹 애플리케이션이 있습니다. 우리는 Weblogic 10과 Tomcat 6에서 실행하고 있습니다. 일부 태그는 Tomcat에서 작동하지 않습니다. 우리는이 오류를 Weblogic과 Tomcat 간의 다음과 같은 차이점까지 추적했습니다.Tomcat의 jsp 사용자 정의 태그 - 태그 인스턴스화

Weblogic에서 jsp 사용자 정의 태그의 생성자는 JSP에서 태그가 나타날 때마다 호출됩니다. Tomcat에서 JSP 커스텀 태그의 생성자는 jsp 페이지에서 태그가 몇 번 사용되던간에 태그의 첫 번째 발생시 한 번만 호출됩니다.

따라서 Tomcat에서는 jsp 사용자 정의 태그에 몇 가지 선택적 속성이 있으므로 이후의 호출은 이전 호출에서 할당 된 값을 재사용합니다. Weblogic에서 태그의 생성자가 각 발생에 대해 호출되었으므로 태그는 JSP 페이지 내의 각 태그 발생에 대한 기본값으로 초기화되었습니다.

JSP 페이지에서 jsp 사용자 정의 태그를 발견 할 때마다 Tomcat이 새 태그 객체를 인스턴스화하도록 사용자에게 알려주는 방법 (Tomcat 구성 파일 항목, web.xml 항목 등을 통해)이 있습니까?

답변

1

서블릿 컨테이너는 (Java Servlet 사양에 따라) 태그 인스턴스를 풀링 할 수도 있고 그렇지 않을 수도 있습니다. 문제를 해결하는 가장 좋은 방법은 태그 작성 방법을 수정하는 것입니다. 귀하의 경우에는 아마도 doEndTag() 메서드에서 정리 (null로 선택적 매개 변수 설정) 할 것입니다.

<servlet> 
     <servlet-name>jsp</servlet-name> 
     <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
     (...) 
     <init-param> 
      <param-name>enablePooling</param-name> 
      <param-value>false</param-value> 
     </init-param> 
     (...) 
</servlet> 
: 그건 가능하지 않은 경우

, 당신은 Tomcat 설치의 conf/web.xml이를 넣어 톰캣에서 풀링 태그를 비활성화 할 수 있습니다

관련 문제