Tomcat 7.0 использует пул тегов:
http://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html
Пул пользовательских тегов JSP - объекты Java, созданные для пользовательских тегов JSP, теперь можно объединять и использовать повторно. Это значительно повышает производительность страниц JSP, использующих пользовательские теги.
На этой странице также сказано, что web.xml может содержать для этого параметр «enablePooling», и что его значением по умолчанию является true.
Так что я бы сказал, что отключение повторного использования тегов не очень хорошая идея, так как это приведет к некоторой потере производительности.
Tomcat 7.0 гарантирует, что состояние класса тега останется неизменным между doStartTag () и doEndTag ():
http://tomcat.apache.org/tomcat-7.0-doc/jspapi/javax/servlet/jsp/tagext/Tag.html
Методы doStartTag и doEndTag могут быть вызваны в обработчике тега. Между этими вызовами предполагается, что обработчик тега содержит состояние, которое должно быть сохранено
Но в том же абзаце между круглыми скобками также говорится, что объект, как ожидается, сохранит свои свойства после:
После вызова doEndTag обработчик тега доступен для дальнейших вызовов ( и ожидается, что он сохранит свои свойства ).
Итак, все, что я делаю, это сбрасываю все локальные переменные к их значению по умолчанию непосредственно перед возвратом doEndTag (). Я не нашел объяснения о том, как реализован пул и повторное использование тегов Tomcat (я думаю, TagHandlerPool.java), поэтому я считаю, что это наиболее безопасный вариант.