You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by Edgar Dollin <Ed...@BLUE-MOOSE.NET> on 2003/02/04 20:28:07 UTC

RE: DO NOT REPLY [Bug 16749] - Struts EL tag handlers cannot be reused by containers

I had posted this to the Tomcat user, but it seems appropriate....
 
 
I recently completed a cutover of moderately sized app from Resin to Tomcat
and just wanted to put my experiences somewhere for posterity.
 
First Resin allows out of order xml documents.  Tomcat goes by the book with
xml.  So web.xml, struts-config.xml and any other xml files you have must
but well structured satisfy the DTD.  With Resin it is very easy to get away
from the DTD requirements.
 
The second issue is that resin is very creative about the tld's.  You can be
sloppy in both the jsp files and the web.inf about where they are and in
most cases resin will find them.  Moving to tomcat you will find any that
are mislocated.  If there are tld's inside of jar files, resin finds them
with basic syntax.  Tomcat needs the full taglib uri in order to find a tld
inside a jar.
 
Resin allows you to mix and match xml formated jsp files with standard
format jsp files.  In tomcat you really should stick to one format or the
other.  When making your choice which format to use, remember in xml format
you cannot use jsp expressions as attribute values.  Also, in tomcat with
the xml format, the assumed page contentType is text/xml, in Resin it is
text/html.  Resin allows attribute specification in xml files without
quotes, tomcat does not.  Resin allows standard jsp scriptlets inside xml
files, tomcat does not.
 
Resin custom tag lifespan is different than Tomcat.  Tomcat keeps them alive
until memory or some other issue forces a release.  Resin dumps the custom
tags when the page has completed processing.  Keep this in mind if you share
information between tags, you keep counters in tags, or you have tags that
are instantiated with various numbers of parameters.  The choices that
Tomcat makes when to instantiate a new tag instance vary slightly from Resin
as well.  For example I was keeping counters and the they broke in two ways,
the Tomcat tag pooling kept the counters running from page to page and the
variations of when to instantiate zeroed the counters unexpectedly.
 
The last major difference between Tomcat and Resin is that if cookies are
enabled Resin assigns the session even if container managed security is not
used.  The effect is that if a link is entered manually from the address
line in Tomcat it is assigned a new session.  
 
In any event, if you are developing under Resin and want to deploy on some
other container, beware that it lets you do lots of non standard stuff.

Edgar