[ 
https://issues.apache.org/jira/browse/JSPWIKI-465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12660573#action_12660573
 ] 

Harry Metske commented on JSPWIKI-465:
--------------------------------------

Note that the following containers use the same Jasper JSP Compiler and will 
also suffer from the same bug :
# Tomcat
# Glassfish
# Geronimo
# Jetty
# JBoss 

Not sure about WebLogic, WebSphere, OC4J and others.

Also not that probably most of these will have an older version than rev. 
441109, in that case there is no workaround at all.
I think it is quite a show stopper, it can take a very long time before these 
containers will have the required Jasper JSP compiler patch.

Do the package names have to be the same as the Project name ? (can we take a 
different package name and keep JSPWiki as project name ?)

> JSP classloading does not work because of package name collision 
> org.apache.jsp <=> org.apache.jspwiki
> ------------------------------------------------------------------------------------------------------
>
>                 Key: JSPWIKI-465
>                 URL: https://issues.apache.org/jira/browse/JSPWIKI-465
>             Project: JSPWiki
>          Issue Type: Bug
>          Components: Servlet Container/Java compatibility
>    Affects Versions: 3.0
>         Environment: JSPWiki 3.0.0-svn-41
>            Reporter: Harry Metske
>            Assignee: Harry Metske
>
> JSPWiki is an incubating project in ASF, one of the required steps here is to 
> move the java package naming from com.ecyrd.jspwiki to org.apache.jspwiki.
> After moving several classes to this new package we are seeing 
> NoClassDeffoundErrors when classes are imported from JSP's
> "Normal"  servlets/classes work fine.
> After digging for a couple of days we found that the problem is caused by a 
> bug in the JasperLoader classloader:
> http://svn.eu.apache.org/viewvc/tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/servlet/JasperLoader.java?view=markup
> The following code snippet shows the failure :
> {noformat}
>       if( !name.startsWith(Constants.JSP_PACKAGE_NAME) ) {
>             // Class is not in org.apache.jsp, therefore, have our
>             // parent load it
>             clazz = parent.loadClass(name);            
>           if( resolve )
>               resolveClass(clazz);
>           return clazz;
>       }
> {noformat}
> The constant Constants.JSP_PACKAGE_NAME is loaded as follows:
> {noformat}
>     /**
>      * The default package name for compiled jsp pages.
>      */
>     public static final String JSP_PACKAGE_NAME = 
>         System.getProperty("org.apache.jasper.Constants.JSP_PACKAGE_NAME", 
> "org.apache.jsp");
> {noformat}
> Note the missing trailing dot !
> So there is a workaround by specifying the Java System Property  
> org.apache.jasper.Constants.TAG_FILE_PACKAGE_NAME=org.apache.somethingelse
> However, this workaround is only available since revision 441109 of Tomcat 6.
> ( 
> http://svn.eu.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/Constants.java?r1=423920&r2=441109&diff_format=h
>  )
> A bug has been filed for the Tomcat team at : 
> https://issues.apache.org/bugzilla/show_bug.cgi?id=46462

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

Reply via email to