The classloading model works fine - the issue is with how the classpath is
passed to the JSP compiler.

As I understand it, not being familiar with Jetty/Jasper, Jasper uses an Ant
Javac task to compile the Java source generated from the JSP. The classpath
supplied to the Javac task is a ':' (path.separator) delimited String. This
String is generated by iterating over the context classloaders and
concatenating all their URLs together (see
JBossWebApplicationContext.getFileClassPath() and
JspRuntimeContext.initClassPath()). Any URLs that are not file: are
discarded as they cannot be converted to a local canonical path.

Boot libraries are not copied to the local machine first so have URLs based
on HOME_URL. Libraries loaded later are copied locally so have URLs relative
to SERVER_BASE_DIR. Basically boot libraries will have file: or http: URLs
depending on where the server was booted from; all others will have file:
URLs due to the local copy.

As a result boot libraries, even though they are in the thread's
classloader, are not passed to the JSP compiler because non-file: URLs are
stripped.

I think the solution here is to pass everything in the classloader chain to
the JSP compiler to ensure that the compilation context will be the same as
the runtime context. I believe concatenating everything together, stripping
non-file: URLs in the process, and then splitting it apart later is asking
for trouble in the long (or maybe short) term. However, I don't know enough
about Jetty/Jasper to know if there are issues with this.

An alternative would be for ServerLoader to copy everything local during
boot, but that leaves the problem of non-file URLs lurking (for example, if
we decide at some point not to copy everything local every time). It also
makes netboot more 'install-on-demand' rather than 'boot-from-network' but
that's just me being anal :-)


> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of Scott
> M Stark
> Sent: Thursday, December 19, 2002 11:01 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [JBoss-dev] Committed support for remote deployment
> scanning
>
>
> ----- Original Message -----
> From: "Jeremy Boynes" <[EMAIL PROTECTED]>
> To: "Jboss-Development" <[EMAIL PROTECTED]>
> Sent: Thursday, December 19, 2002 9:50 AM
> Subject: [JBoss-dev] Committed support for remote deployment scanning
>
> > * All WARs must contain all jars needed for JSP compilation. The Jasper
> >   compiler needs the compilation classpath supplied as a String of
> >   concatenated local paths and any http: based URLs are
> excluded. This means
> >   anything added to the classpath during boot is not available if the
> >   server was netbooted. This should not be an issue for normal
> applications
> >   but was for jmx-console.war which assumed jboss-jmx.jar would
> be on the
> >   compilation classpath.
>
> This is a big problem and something we have worked to avoid with
> our 3.0 classloading
> model. Explain why the boot classpath is not available.
>
> xxxxxxxxxxxxxxxxxxxxxxxx
> Scott Stark
> Chief Technology Officer
> JBoss Group, LLC
> xxxxxxxxxxxxxxxxxxxxxxxx
>
>
>
>
>
> -------------------------------------------------------
> This SF.NET email is sponsored by: Geek Gift Procrastinating?
> Get the perfect geek gift now!  Before the Holidays pass you by.
> T H I N K G E E K . C O M      http://www.thinkgeek.com/sf/
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development



-------------------------------------------------------
This SF.NET email is sponsored by: Geek Gift Procrastinating?
Get the perfect geek gift now!  Before the Holidays pass you by.
T H I N K G E E K . C O M      http://www.thinkgeek.com/sf/
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to