Mark,

Thanks for the clarification. I must confess I has missed the 'should' and
read it as 'must'. I'll revert my previous patch and modify the bugzilla
report to an enhancement request to log a warning.

Mark

On Tuesday, January 06, 2004 11:45 PM, Mark Roth [SMTP:[EMAIL PROTECTED] wrote:
> Hi Mark,
> 
> Kin-Man pointed me to this thread and I figured I'd contribute my 
> interpretation.
> 
> For reference, the JSP 2.0 specification, JSP.7.3.1 states:
> 
>      "Tag library descriptor files have names that use the
>      extension .tld, and the extension indicates a tag library
>      descriptor file. When deployed inside a JAR file, the tag
>      library descriptor files must be in the META-INF directory, or
>      a subdirectory of it. When deployed directly into a web
>      application, the tag library descriptor files must always be in
>      the WEB-INF directory, or some subdirectory of it. TLD files
>      should not be placed in /WEB-INF/classes or /WEB-INF/lib."
> 
> A few notes:
> 
> 1. The intent of this guideline is that the container can but need not
>     recognize .tld files elsewhere.  This is a requirement on the
>     application, not the container.  In other words, an application
>     that places its TLD file in any other location is in violation of
>     the specification, and a container can but need not handle that
>     application.
> 
> 2. The specification does not state that an error occurs if a TLD
>     file appears elsewhere.  It leaves it up to the container.
> 
> 3. The specification says "should" not be placed in /WEB-INF/classes
>     or /WEB-INF/lib, not "must", so the requirement for these two
>     locations is even less strong.
> 
> So it seems we're free to do what we want in Tomcat.  My recommendation 
> would be to either leave it the way it was or log a warning to the user 
> that the application is not spec-compliant.
> 
> I don't like producing an error here - if prior versions of Tomcat 
> handled this, I see no reason to go out of our way to change this and 
> break applications that once worked.  However, it might be appropriate 
> to log a friendly warning to the user since the application is not 
> following the specification.
> 
> ---
> Mark Roth, Java Software
> JSP 2.0 Co-Specification Lead
> Sun Microsystems, Inc.
> 
> 
> Mark Thomas wrote:
> > Larry,
> > 
> > AFAIK Tomcat behaviour does not depend on the version of the
> > deployment descriptor schema apart from during the
> > interpretation of the descriptor. On this basis, I am against
> > setting a precedent here.
> > 
> > Further, my understanding is that each version of Tomcat is
> > written to support a single defined version of the spec. It is
> > not written to support multiple spec versions. If a version of
> > the spec is not 100% backwards compatible with the previous
> > version I believe that this is a spec issue, not a tomcat
> > issue.
> > 
> > It is inevitable that in each new version of the spec there will
> > be a number of areas that will cause problems with migrating
> > applications from a previous version.
> > 
> > I would be interested to hear the views of other tomcat
> > developers on this issue.
> > 
> > Mark
> > 
> > 
> > On Tuesday, January 06, 2004 3:27 PM, Larry Isaacs
> > [SMTP:[EMAIL PROTECTED] 
> > wrote:
> > 
> >>Mark,
> >>
> >>For backwards compatibility, I think the restrictions to the TLD
> >>location need to follow the spec level used by the web application.
> >>Since JSP 1.1 didn't include much in the way of restrictions,
> >>I know of some legacy Servlet 2.2/JSP 1.1 webapps that would fail
> >>these restrictions if deployed to Tomcat 5 with this change (or
> >>Tomcat 4.1 with the port of this change).  If you want, I can take
> >>a look at fixing this.
> >>
> >>Cheers,
> >>Larry
> >>
> >>
> >>>-----Original Message-----
> >>>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> >>>Sent: Saturday, January 03, 2004 8:57 AM
> >>>To: [EMAIL PROTECTED]
> >>>Subject: cvs commit:
> >>>jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/reso
> >>>urces messages.properties
> >>>
> >>>
> >>>markt       2004/01/03 05:56:39
> >>>
> >>>  Modified:    jasper2/src/share/org/apache/jasper/compiler
> >>>                        TagLibraryInfoImpl.java
> >>>               jasper2/src/share/org/apache/jasper/resources
> >>>                        messages.properties
> >>>  Log:
> >>>  - Fix bug 11069. Check that the location of the TLD file is
> >>>spec compliant.
> >>>
> >>>  Revision  Changes    Path
> >>>  1.50      +11 -4
> >>>jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/comp
> >>>iler/TagLibraryInfoImpl.java
> >>>
> >>>  Index: TagLibraryInfoImpl.java
> >>>  ===================================================================
> >>>  RCS file:
> >>>/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/j
> >>>asper/compiler/TagLibraryInfoImpl.java,v
> >>>  retrieving revision 1.49
> >>>  retrieving revision 1.50
> >>>  diff -u -r1.49 -r1.50
> >>>  --- TagLibraryInfoImpl.java      3 Jan 2004 12:17:18 -0000       1.49
> >>>  +++ TagLibraryInfoImpl.java      3 Jan 2004 13:56:38 -0000       1.50
> >>>  @@ -5,7 +5,7 @@
> >>>    *
> >>>    * The Apache Software License, Version 1.1
> >>>    *
> >>>  - * Copyright (c) 1999 The Apache Software Foundation.  All rights
> >>>  + * Copyright (c) 1999,2004 The Apache Software Foundation.
> >>> All rights
> >>>    * reserved.
> >>>    *
> >>>    * Redistribution and use in source and binary forms, with
> >>>or without
> >>>  @@ -200,6 +200,13 @@
> >>>                       }
> >>>                   } catch (FileNotFoundException ex) {
> >>>
> >>>err.jspError("jsp.error.file.not.found", location[0]);
> >>>  +                }
> >>>  +
> >>>  +                // Check TLD file location conforms to JSP.7.3.1
> >>>  +                if (!location[0].startsWith("/WEB-INF/")
> >>>  +                        ||
> >>>location[0].startsWith("/WEB-INF/classes/")
> >>>  +                        ||
> >>>location[0].startsWith("/WEB-INF/lib/")) {
> >>>  +
> >>>err.jspError("jsp.error.tld.invalid.location", location[0]);
> >>>                   }
> >>>
> >>>                   parseTLD(ctxt, location[0], in, null);
> >>>
> >>>
> >>>
> >>>  1.138     +2 -1
> >>>jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/reso
> >>>urces/messages.properties
> >>>
> >>>  Index: messages.properties
> >>>  ===================================================================
> >>>  RCS file:
> >>>/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/j
> >>>asper/resources/messages.properties,v
> >>>  retrieving revision 1.137
> >>>  retrieving revision 1.138
> >>>  diff -u -r1.137 -r1.138
> >>>  --- messages.properties  11 Dec 2003 18:24:21 -0000      1.137
> >>>  +++ messages.properties  3 Jan 2004 13:56:39 -0000       1.138
> >>>  @@ -187,6 +187,7 @@
> >>>   jsp.error.tld.unable_to_read=Unable to read TLD \"{1}\"
> >>>from JAR file \"{0}\": {2}
> >>>   jsp.error.tld.unable_to_get_jar=Unable to get JAR resource
> >>>\"{0}\" containing TLD: {1}
> >>>   jsp.error.tld.missing_jar=Missing JAR resource \"{0}\"
> >>>containing TLD
> >>>  +jsp.error.tld.invalid.location=\"{0}\" is not a valid
> >>>location for a TLD as per JSP specification JSP.7.3.1
> >>>   jsp.error.webxml_not_found=Could not locate web.xml
> >>>   jsp.cmd_line.usage=Usage: jsptoservlet [-dd
> >>><path/to/outputDirectory>] [-keepgenerated] \
> >>>   <.jsp files>
> >>>
> >>>
> >>>
> >>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> > 
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to