Here's something that I discovered yesterday about the classloader that kinda surprised me. Maybe some of you merlin contributors can comment on it...
I have a container that deploys the Jetty-Phoenix block. The classloader for this container includes the jasper-compiler.jar, jasper-runtime.jar, and the javax-servlet.jar in order to support JSPs. The Jetty-Phoenix block supports deployment of web applications. I deployed a WAR in my Jetty-Phoenix yesterday that included some JSP. The JSP compiled fine, but when the JSP was attempted to execute, it could not resolve classes in the jasper-runtime or the servlet.jar. I finally got it working by deploying the jasper-runtime.jar and servlet.jar in the WEB-INF/lib directory of my web app WAR. It seems that the jasper-runtime and servlet jars weren't visible to the web application from the merlin container classloader, although the jasper-compiler jar was when the Jetty-Phoenix initially compiled the JSP to Java code. Thinking I might need a more "global" classloader than the container's, I tried moving the jasper-runtime and servlet jars to the merlin/ext directory, but that help either. Only including them in the web apps WEB-INF/lib directory makes them visible to the executing JSP code. I think that is strange. If I run Jetty or Tomcat as standalone servers, I don't have to put those jars in the webapps classloader, as they distributed as part of the server's own common lib. I might have to go back and test this, but I think by including those jars in the SAR file when I deploy the Jetty-Phoenix block in a Phoenix container, I don't have to include them in the webapps classloader either. Any comments? Is this expected behavior? Timothy --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
