You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Felix Meschberger (JIRA)" <ji...@apache.org> on 2010/12/10 08:16:00 UTC

[jira] Created: (SLING-1891) Replace Cass.forName uses by ClassLoader.loadClass

Replace Cass.forName uses by ClassLoader.loadClass
--------------------------------------------------

                 Key: SLING-1891
                 URL: https://issues.apache.org/jira/browse/SLING-1891
             Project: Sling
          Issue Type: Bug
          Components: Extensions, JCR, Launchpad, Scripting
    Affects Versions: Extensions Event 2.4.2, JCR Resource 2.0.6,  Launchpad Base 2.2.0, Scripting API 2.1.0, Scripting JavaScript 2.0.8, Scripting JSP 2.0.10
            Reporter: Felix Meschberger
             Fix For: Scripting JSP 2.0.12, Scripting JavaScript 2.0.10, Scripting API 2.1.2, Launchpad Base 2.2.2, JCR Resource 2.0.8, Extensions Event 3.0.0


Class.forName has a nasty problem in that it caches returned classes in the class load first asked (the initiator) in addition to the class loader actually defining the class. The ClassLoader.loadClass methods do not have this problem and only caches the loaded class in the defining class loader.

Looking for uses in the Sling code base (using find . -name "*.java" -exec fgrep -l Class.forName {} \;) I found the following nice occurrences:

    launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java
    bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/JCRHelper.java
    bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java
    bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspUtil.java
    bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/TagPluginManager.java
    bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java
    bundles/scripting/api/src/main/java/sun/misc/Service.java
    bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java
    contrib/explorers/gwt/src/main/java/org/apache/sling/explorer/client/widgets/tree/resource/ResourceTree.java

For more information on this problem, I suggest reading the blog series by BJ Hargrave, probably starting with http://blog.bjhargrave.com/2007/09/classforname-caches-defined-class-in.html.

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


[jira] Updated: (SLING-1891) Replace Class.forName uses by ClassLoader.loadClass

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SLING-1891?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Ziegeler updated SLING-1891:
------------------------------------

    Summary: Replace Class.forName uses by ClassLoader.loadClass  (was: Replace Cass.forName uses by ClassLoader.loadClass)

> Replace Class.forName uses by ClassLoader.loadClass
> ---------------------------------------------------
>
>                 Key: SLING-1891
>                 URL: https://issues.apache.org/jira/browse/SLING-1891
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions, JCR, Launchpad, Scripting
>    Affects Versions: Scripting JSP 2.0.10, Scripting JavaScript 2.0.8, Scripting API 2.1.0,  Launchpad Base 2.2.0, JCR Resource 2.0.6, Extensions Event 2.4.2
>            Reporter: Felix Meschberger
>            Assignee: Carsten Ziegeler
>             Fix For: Scripting JSP 2.0.12, Scripting JavaScript 2.0.10, Scripting API 2.1.2, Launchpad Base 2.2.2, JCR Resource 2.0.8, Extensions Event 3.0.0
>
>
> Class.forName has a nasty problem in that it caches returned classes in the class load first asked (the initiator) in addition to the class loader actually defining the class. The ClassLoader.loadClass methods do not have this problem and only caches the loaded class in the defining class loader.
> Looking for uses in the Sling code base (using find . -name "*.java" -exec fgrep -l Class.forName {} \;) I found the following nice occurrences:
>     launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java
>     bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/JCRHelper.java
>     bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspUtil.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/TagPluginManager.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java
>     bundles/scripting/api/src/main/java/sun/misc/Service.java
>     bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java
>     contrib/explorers/gwt/src/main/java/org/apache/sling/explorer/client/widgets/tree/resource/ResourceTree.java
> For more information on this problem, I suggest reading the blog series by BJ Hargrave, probably starting with http://blog.bjhargrave.com/2007/09/classforname-caches-defined-class-in.html.

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


[jira] Assigned: (SLING-1891) Replace Cass.forName uses by ClassLoader.loadClass

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SLING-1891?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Ziegeler reassigned SLING-1891:
---------------------------------------

    Assignee: Carsten Ziegeler

> Replace Cass.forName uses by ClassLoader.loadClass
> --------------------------------------------------
>
>                 Key: SLING-1891
>                 URL: https://issues.apache.org/jira/browse/SLING-1891
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions, JCR, Launchpad, Scripting
>    Affects Versions: Scripting JSP 2.0.10, Scripting JavaScript 2.0.8, Scripting API 2.1.0,  Launchpad Base 2.2.0, JCR Resource 2.0.6, Extensions Event 2.4.2
>            Reporter: Felix Meschberger
>            Assignee: Carsten Ziegeler
>             Fix For: Scripting JSP 2.0.12, Scripting JavaScript 2.0.10, Scripting API 2.1.2, Launchpad Base 2.2.2, JCR Resource 2.0.8, Extensions Event 3.0.0
>
>
> Class.forName has a nasty problem in that it caches returned classes in the class load first asked (the initiator) in addition to the class loader actually defining the class. The ClassLoader.loadClass methods do not have this problem and only caches the loaded class in the defining class loader.
> Looking for uses in the Sling code base (using find . -name "*.java" -exec fgrep -l Class.forName {} \;) I found the following nice occurrences:
>     launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java
>     bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/JCRHelper.java
>     bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspUtil.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/TagPluginManager.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java
>     bundles/scripting/api/src/main/java/sun/misc/Service.java
>     bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java
>     contrib/explorers/gwt/src/main/java/org/apache/sling/explorer/client/widgets/tree/resource/ResourceTree.java
> For more information on this problem, I suggest reading the blog series by BJ Hargrave, probably starting with http://blog.bjhargrave.com/2007/09/classforname-caches-defined-class-in.html.

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


[jira] Closed: (SLING-1891) Replace Class.forName uses by ClassLoader.loadClass

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SLING-1891?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Ziegeler closed SLING-1891.
-----------------------------------


> Replace Class.forName uses by ClassLoader.loadClass
> ---------------------------------------------------
>
>                 Key: SLING-1891
>                 URL: https://issues.apache.org/jira/browse/SLING-1891
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions, JCR, Launchpad, Scripting
>    Affects Versions: Scripting JSP 2.0.10, Scripting JavaScript 2.0.8, Scripting API 2.1.0,  Launchpad Base 2.2.0, JCR Resource 2.0.6, Extensions Event 2.4.2
>            Reporter: Felix Meschberger
>            Assignee: Carsten Ziegeler
>             Fix For: Scripting JSP 2.0.12, Scripting JavaScript 2.0.10, Scripting API 2.1.2, Launchpad Base 2.2.2, JCR Resource 2.0.8, Extensions Event 3.0.0
>
>
> Class.forName has a nasty problem in that it caches returned classes in the class load first asked (the initiator) in addition to the class loader actually defining the class. The ClassLoader.loadClass methods do not have this problem and only caches the loaded class in the defining class loader.
> Looking for uses in the Sling code base (using find . -name "*.java" -exec fgrep -l Class.forName {} \;) I found the following nice occurrences:
>     launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java
>     bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/JCRHelper.java
>     bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspUtil.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/TagPluginManager.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java
>     bundles/scripting/api/src/main/java/sun/misc/Service.java
>     bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java
>     contrib/explorers/gwt/src/main/java/org/apache/sling/explorer/client/widgets/tree/resource/ResourceTree.java
> For more information on this problem, I suggest reading the blog series by BJ Hargrave, probably starting with http://blog.bjhargrave.com/2007/09/classforname-caches-defined-class-in.html.

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


[jira] Resolved: (SLING-1891) Replace Cass.forName uses by ClassLoader.loadClass

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SLING-1891?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Ziegeler resolved SLING-1891.
-------------------------------------

    Resolution: Fixed

Changed in revision 1044241

> Replace Cass.forName uses by ClassLoader.loadClass
> --------------------------------------------------
>
>                 Key: SLING-1891
>                 URL: https://issues.apache.org/jira/browse/SLING-1891
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions, JCR, Launchpad, Scripting
>    Affects Versions: Scripting JSP 2.0.10, Scripting JavaScript 2.0.8, Scripting API 2.1.0,  Launchpad Base 2.2.0, JCR Resource 2.0.6, Extensions Event 2.4.2
>            Reporter: Felix Meschberger
>            Assignee: Carsten Ziegeler
>             Fix For: Scripting JSP 2.0.12, Scripting JavaScript 2.0.10, Scripting API 2.1.2, Launchpad Base 2.2.2, JCR Resource 2.0.8, Extensions Event 3.0.0
>
>
> Class.forName has a nasty problem in that it caches returned classes in the class load first asked (the initiator) in addition to the class loader actually defining the class. The ClassLoader.loadClass methods do not have this problem and only caches the loaded class in the defining class loader.
> Looking for uses in the Sling code base (using find . -name "*.java" -exec fgrep -l Class.forName {} \;) I found the following nice occurrences:
>     launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/Sling.java
>     bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/JCRHelper.java
>     bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspUtil.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/TagPluginManager.java
>     bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java
>     bundles/scripting/api/src/main/java/sun/misc/Service.java
>     bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java
>     contrib/explorers/gwt/src/main/java/org/apache/sling/explorer/client/widgets/tree/resource/ResourceTree.java
> For more information on this problem, I suggest reading the blog series by BJ Hargrave, probably starting with http://blog.bjhargrave.com/2007/09/classforname-caches-defined-class-in.html.

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