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]