users@glassfish.java.net

web app classloader not following spec, or...?

From: Joseph B. Ottinger <joeo_at_enigmastation.com>
Date: Thu, 20 Apr 2006 08:13:53 -0400 (EDT)

Okay, another silly question, focused on deployment on Glassfish B44.

i have an ear structured something like this:

ear1.ear
    /META-INF/application.xml
    /ejb1.jar
    /util1.jar
    /sitemesh-2.2.1.jar
    /web1.war
    /web2.war

Now, each .war uses a .tld and a filter that's located in
sitemesh-2.2.1.jar. The META-INF/MANIFEST.MF for each .war refers to
sitemesh-2.2.1.jar via the Class-Path entry, which is supposed to be
supported when a .war is deployed in an .ear (see J2EE.8.2, specifically
J2EE.8.2.1, from the Java EE spec referred to from jcp.org.)

However, the filter isn't loaded from the jar; deployment gives an
exception, saying that the class for the filter isn't found. In fact, I
have DWR installed up there too, and the DWR servlet isn't found either -
even though I've checked the logs and the logs show both sitemesh and DWR
in the classpath for the .wars. I haven't a clue whether the TLD is going
to be resolved - but if the filter can't start and the web app doesn't
deploy, that doesn't matter much.

Again, according to J2EE.8.2, my understanding is that the web app should
be able to load filters/servlets/TLDs from libraries referred to in the
MANIFEST.MF file; perhaps I'm misunderstanding, and the manifest entry
only applies to NON-servlets/filters/TLDs, as perhaps they need resources
available to web-apps rather than being able to stand alone.

Can anyone clarify this for me?

-----------------------------------------------------------------------
Joseph B. Ottinger http://enigmastation.com
Editor, http://www.TheServerSide.com joeo@enigmastation.com