I take it all back :-)

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]



Reply via email to