You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Carsten Ziegeler (JIRA)" <ji...@apache.org> on 2010/12/20 15:58:03 UTC

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

     [ 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.