Carsten Ziegeler schrieb:
I guess you have a xerces version in your web-inf/lib /or
web-inf/shielded/lib. So you have two versions in your classpath.
Try removing your version (put it either in the endorsed lib if you need
your own version), the same applies for xalan.

The problem also exists without my ShieldingBlockServlet, I just tested serving jsps from a sitemap that is part of a normal cocoon webapp with shielding done by the deployer plugin and the same exception pops up upon requesting the jsp.

The actual bug is that the cocoon-jsp block does not work with any kind of shielding, since it uses the jasper jsp engine provided by the webapp and that one expects its own JAXP implementation. The jasper jsp engine can be loaded, but during compiling of a jsp it tries to load some JAXP class, which fails, because that loading is done by the shielding classloader, which has another version of Xerces and xalan. (IIRC, the latter point is the reason for shielding anyway, since many transformation stuff done with cocoon sitemaps does not work with older XSLT implementations provided by the webapp container - some really annoying problem we already stepped into).

A solution to that kind of problem is not easy. The first idea would be to explicitly check for the classloader in the cocoon JSP component before executing the Jasper enginge, but how do you find out if you got a shielding classloader or not? You cannot cast, not for the ShieldingClassLoader which will be part of the maven-war-plugin you don't want to have a dependency to, and also not for the WebappClassLoader, because that one is webapp container specific (and there is no API for that in the servlet specs).

So a dirty Hack would be to do a check like

ClassLoader cl = this.getClass().getClassLoader();
// step over all shielding class loaders to find the webapp classloader
while (cl.getClass().getName().indexOf("Shielded")) {
    cl = cl.getParent();
}

// set cl as context classloader
// start jsp engine


Looks kinda ugly....

Alex

--
Alexander Klimetschek
http://www.mindquarry.com

Reply via email to