公司使用的自定义标签 <rowsbean:if>标签在Tomcat4.1上的使用出现错误的问题已经解决。
tomcat4.1安装目录/conf/web.xml (全局参数);加入enablePooling参数,设置为false,不缓存自定义标签。
===========================================
<servlet>
<servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<!--begin加入,请加为第一个参数-->
<init-param>
<param-name>enablePooling</param-name>
<param-value>false</param-value>
</init-param>
<!--end加入-->
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
===========================================
tomcat4.1的开发者认为,tag的release()方法不是java规范中必须实现的方法,仅在GC前调用。tomcat4.1默认开启了标签缓冲池(tag-pooling),因此执行完一次<rowsbean:if>标签之后,没有执行release()方法(websphere会)。关闭这个估计会影响tomcat处理jsp的性能!!4.0和4.1版本的重大区别之一就是这个特征!
同样适用于tomcat 5。
相关信息 http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16001
tomcat4.1安装目录/conf/web.xml (全局参数);加入enablePooling参数,设置为false,不缓存自定义标签。
===========================================
<servlet>
<servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<!--begin加入,请加为第一个参数-->
<init-param>
<param-name>enablePooling</param-name>
<param-value>false</param-value>
</init-param>
<!--end加入-->
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
===========================================
tomcat4.1的开发者认为,tag的release()方法不是java规范中必须实现的方法,仅在GC前调用。tomcat4.1默认开启了标签缓冲池(tag-pooling),因此执行完一次<rowsbean:if>标签之后,没有执行release()方法(websphere会)。关闭这个估计会影响tomcat处理jsp的性能!!4.0和4.1版本的重大区别之一就是这个特征!
同样适用于tomcat 5。
相关信息 http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16001