Always test internal bug reports before going to a public list and...
One of my golden rules - except that I didn't...
So it looks like we now have one working testcase here and one case of pilot error to look at.
Apologies for the wasted bandwidth,
Jules
Jules Gosnell wrote:
Larry Isaacs wrote:
There is a choice when pre-compiling JSPs.
1. Compile to "real" servlets. This involves precompiling the JSPs to classes and adding mappings to the web.xml so they execute just like other servlets. This cuts the JspServlet out of the picture and the JSPs are executed the same as other servlets.
2. Pre-populate Tomcat's "work" directory. This also involves precompiling the JSPs to classes, under the "work" directory, but continues to use the JspServlet to execute the JSPs.
The critical point is that the expected packages to which the JSPs are compiled are different between these two choices.
The JspServlet expects every JSP to be compiled into the org.apache.jsp package. Thus, every index.jsp is expected to be compiled as the org.apache.jsp.index_jsp class, even though the class file may be in various subdirectories, for example "dir". The JspServlet avoids the obvious naming collisions by loading each JSP class into a separate classloader. (Nice trick, but can make life tough for debuggers.)
For choice 1, the JSPs need to be compiled into a directory structure where the package matches the directory structure in the standard Java way. Each JSP's fully qualified class name would need to be unique and entered into the web.xml.
I have a requirement for this precompilation mode (1) on TC 4.1.29.
5.0.x seems to have been patched to do this (preserve the directory/package structure of the original jsp src) , but fixes do not appear to have been merged back into 4.1.x and are unfortunately tangled up with a number of other changes to 5.0.x.
I guess I am therefore looking for a patch to the 4.1.x branch. I'd be very grateful if anyone here would furnish me with one. Otherwise I shall probably have to put one together myself, in which case I shall post it here if anyone is interested.
Thanks for your time,
Jules
The error below appears that the index.jsp in question has been compiled sort of per choice 1, but is being run under choice 2. The class file appears to be at the right location under the work directory, but it was compiled to the wrong package, i.e. the package includes "dir", when it shouldn't.
I don't use JspC, so I can't help much with respect to its use. I'm currently not sure about its usability state in the various Tomcat releases. In the past, it has had difficulting getting the package right in the context of these two choices. I would think that in the current releases, it can be coaxed into doing the right thing for one or both of these choices, but I can't say much more than that.
However, I have used the Ant jspc task along with the javac task to accomplish choice 2 without much difficulty in a number of different Tomcat 4.1 releases. I would assume there would be no problems as well in the current Tomcat 5 release, but I haven't actually tried it yet.
Cheers, Larry
-----Original Message-----
From: Antony Paul [mailto:[EMAIL PROTECTED] Sent: Wednesday, January 07, 2004 8:46 AM
To: Tomcat Users List
Subject: Re: Problems running pre-compiled JSP classes when in subdirectories
The generated servlets are not put in a package. When Tomcat is compiling
JSP it is put in org.apache.jsp. How to set this in the jspc task.
The files are generated as usual in the work directory in the same structure
as Tomcat itself compiles JSP files.
Antony Paul ----- Original Message ----- From: "Ralph Einfeldt" <[EMAIL PROTECTED]> To: "Tomcat Users List" <[EMAIL PROTECTED]> Sent: Wednesday, January 07, 2004 7:06 PM Subject: RE: Problems running pre-compiled JSP classes when in subdirectories
May be you should have a look at the following:
- the package statements in the generated source files - the file structure of the generate class files
-----Original Message----- From: Jay Glanville [mailto:[EMAIL PROTECTED] Sent: Wednesday, January 07, 2004 2:20 PM To: 'Tomcat Users List' Subject: Problems running pre-compiled JSP classes when in subdirectories
Here's my application's background. I have two files:
<WEBROOT>/index.jsp
<WEBROOT>/dir/index.jsp
java.lang.NoClassDefFoundError: org/apache/jsp/index_jsp
(wrong name:
org/apache/jsp/dir/index_jsp) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:537) at java.lang.ClassLoader.defineClass(ClassLoader.java:448) at
--------------------------------------------------------------------- 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]
________________________________________________________________________ This email has been scanned for all viruses by the MessageLabs Email Security System. For more information on a proactive email security service working around the clock, around the globe, visit http://www.messagelabs.com ________________________________________________________________________
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]