Tomcat 7.0 utilizza tag messa in comune:
http://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html
JSP custom tag Pooling - Gli oggetti Java istanziati per JSP tag personalizzati possono ora essere riunite e riutilizzati. Ciò aumenta notevolmente le prestazioni delle pagine JSP che utilizzano tag personalizzati.
Quella pagina dice anche che web.xml può contenere un'opzione "enablePooling" e che il suo valore predefinito è true.
Quindi direi che disabilitare il riutilizzo dei tag non è una buona idea in quanto porterebbe a una perdita di prestazioni.
Tomcat 7.0 garantisce che lo stato della volontà di classe tag rimane invariato tra doStartTag() e doEndTag():
http://tomcat.apache.org/tomcat-7.0-doc/jspapi/javax/servlet/jsp/tagext/Tag.html
doStartTag e doEndTag metodi possono essere richiamati sul tag handler. Tra queste invocazioni, il tag handler si presume di tenere uno stato che deve essere preservata
Ma lo stesso paragrafo dice anche fra parentesi che l'oggetto si prevede di avere le sue proprietà mantenuto dopo:
Dopo la chiamata doEndTag, il gestore tag è disponibile per ulteriori invocazioni (e si prevede che abbia mantenuto le sue proprietà).
Quindi, ciò che faccio è ripristinare tutte le variabili locali al loro valore predefinito appena prima che doEndTag() restituisca. Non ho trovato alcuna spiegazione su come il pool di tag Tomcat e il riutilizzo siano implementati (TagHandlerPool.java credo), quindi penso che sia l'opzione più sicura.
Puoi fare un esempio? Ad esempio, un caso di prova insufficiente minimo? –
cosa comporterebbe questo esempio? my tomcat config + jsp + tag personalizzato? sembra dimensioni proibitive – mkoryak