You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Paul McMahan (JIRA)" <ji...@apache.org> on 2007/03/12 16:59:09 UTC

[jira] Updated: (GERONIMO-2955) MyFaces Tag Library Descriptors are not found by the Jasper Compiler

     [ https://issues.apache.org/jira/browse/GERONIMO-2955?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul McMahan updated GERONIMO-2955:
-----------------------------------

    Description: 
Jasper's technique for finding Tag Library Descriptors (TLDs) does not work well with Geronimo's MultiParentClassLoader.   The Jasper compiler tries to find TLDs in jar files by getting the list of jars from the webapp's classloader and scanning them for META-INF/\*\*.tld.  Then it repeats this process up the classloader hierarchy (at least what it *thinks* is the classloader hierarchy) by calling ClassLoader.getParent().   That works OK when then TLDs are in the webapp's WEB-INF/lib or in the JRE's system or application classloader.  But this technique doesn't work in Geronimo because there are sometimes jars in the classloader hierarchy that are only accessible by using Geronimo's special MultiParentClassLoader.getParents() method.

The Jasper code referred to above can be viewed in the scanJars() method of this class:
http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_10/java/org/apache/jasper/compiler/TldLocationsCache.java

Because of this limitation the Jasper compiler does not find the TLDs in myfaces-impl-2.0-SNAPSHOT.jar because it doesn't find the classloader containing that jar when it looks up the direct lineage of classloaders.  This causes the following error message when a JSP refers to the JSF taglibs:
{quote}
javax.servlet.ServletException: The absolute uri: http://java.sun.com/jsf/html cannot be resolved in either web.xml or the jar files deployed with this application
{quote}

The MyFaces TLDs need to be made accessible to Jasper so that webapps can reference the JSF taglibs in their JSPs without copying the TLDs into their WARs.

  was:
Jasper's technique for finding Tag Library Descriptors (TLDs) does not work well with Geronimo's MultiParentClassLoader.   The Jasper compiler tries to find TLDs in jar files by getting the list of jars from the webapp's classloader and scanning them for META-INF/**.tld.  Then it repeats this process up the classloader hierarchy (at least what it *thinks* is the classloader hierarchy) by calling ClassLoader.getParent().   That works OK when then TLDs are in the webapp's WEB-INF/lib or in the JRE's system or application classloader.  But this technique doesn't work in Geronimo because there are sometimes jars in the classloader hierarchy that are only accessible by using Geronimo's special MultiParentClassLoader.getParents() method.

The Jasper code referred to above can be viewed in the scanJars() method of this class:
http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_10/java/org/apache/jasper/compiler/TldLocationsCache.java

Because of this limitation the Jasper compiler does not find the TLDs in myfaces-impl-2.0-SNAPSHOT.jar because it doesn't find the classloader containing that jar when it looks up the direct lineage of classloaders.  This causes the following error message when a JSP refers to the JSF taglibs:
{quote}
javax.servlet.ServletException: The absolute uri: http://java.sun.com/jsf/html cannot be resolved in either web.xml or the jar files deployed with this application
{quote}

The MyFaces TLDs need to be made accessible to Jasper so that webapps can reference the JSF taglibs in their JSPs without copying the TLDs into their WARs.


> MyFaces Tag Library Descriptors are not found by the Jasper Compiler
> --------------------------------------------------------------------
>
>                 Key: GERONIMO-2955
>                 URL: https://issues.apache.org/jira/browse/GERONIMO-2955
>             Project: Geronimo
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: web
>    Affects Versions: 2.0-M3
>            Reporter: Paul McMahan
>         Assigned To: Paul McMahan
>            Priority: Critical
>
> Jasper's technique for finding Tag Library Descriptors (TLDs) does not work well with Geronimo's MultiParentClassLoader.   The Jasper compiler tries to find TLDs in jar files by getting the list of jars from the webapp's classloader and scanning them for META-INF/\*\*.tld.  Then it repeats this process up the classloader hierarchy (at least what it *thinks* is the classloader hierarchy) by calling ClassLoader.getParent().   That works OK when then TLDs are in the webapp's WEB-INF/lib or in the JRE's system or application classloader.  But this technique doesn't work in Geronimo because there are sometimes jars in the classloader hierarchy that are only accessible by using Geronimo's special MultiParentClassLoader.getParents() method.
> The Jasper code referred to above can be viewed in the scanJars() method of this class:
> http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_10/java/org/apache/jasper/compiler/TldLocationsCache.java
> Because of this limitation the Jasper compiler does not find the TLDs in myfaces-impl-2.0-SNAPSHOT.jar because it doesn't find the classloader containing that jar when it looks up the direct lineage of classloaders.  This causes the following error message when a JSP refers to the JSF taglibs:
> {quote}
> javax.servlet.ServletException: The absolute uri: http://java.sun.com/jsf/html cannot be resolved in either web.xml or the jar files deployed with this application
> {quote}
> The MyFaces TLDs need to be made accessible to Jasper so that webapps can reference the JSF taglibs in their JSPs without copying the TLDs into their WARs.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.