[ 
https://issues.apache.org/jira/browse/JXPATH-127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12676679#action_12676679
 ] 

mbenson edited comment on JXPATH-127 at 2/25/09 7:39 AM:
-------------------------------------------------------------

Using [lang] code is not a problem as it is already ASL licensed code either 
owned by or granted use to the ASF.  I think I'm okay with including the last 
patch.  Can you comment back indicating that you grant the ASF use of the parts 
of this patch written by you?

      was (Author: mbenson):
    Using [lang] code is not a problem as it is already ASL licensed code 
either owned by or granted use to the ASF.  I think I'm okay with this.
  
> Change dynamic class loading to consult context class loader.
> -------------------------------------------------------------
>
>                 Key: JXPATH-127
>                 URL: https://issues.apache.org/jira/browse/JXPATH-127
>             Project: Commons JXPath
>          Issue Type: Improvement
>            Reporter: John Trimble
>             Fix For: post-1.3
>
>         Attachments: classloading_fix_jxpath14.patch, 
> jxpath-14-classloading-lang-port-with-fallback.patch, 
> jxpath-14-classloading-lang-port.patch, 
> jxpath-14-classloading-widest-scope.patch
>
>
> For dynamically loading classes, JXPath currently uses Class.forName(...). 
> This means all classes loaded by JXPath must be visible to whatever class 
> loader loaded JXPath. This is restrictive in large frameworks and web 
> applications where multiple class loaders are in use. In particular, in an 
> EJB3 application deployed on Weblogic, the shared jars between different EJB 
> modules are loaded with a separate class loader than the modules themselves. 
> Consequently, if the jxpath.jar is among the general libraries for the 
> application, then a specific EJB module will be unable to reference static 
> methods of classes within its own module in an xpath expression. For example, 
> consider the following lines of code in an EJB module class:
> JXPathContext context = JXPathContext.newContext(new Object());
> Object value = context.getValue("SomeClass.getSomething()");
> This will fail, with a ClassNotFoundException, if SomeClass is a class in the 
> module, but jxpath is a general library for the application.
> Attached (or will be once I figure out how) is a patch for JXPath that gets 
> around this issue. The patch changes the class loading strategy to use the 
> context class loader, when it appears appropriate, to dynamically load 
> classes. The strategy is based on suggestions and example code from:
> http://www.javaworld.com/javaworld/javaqa/2003-06/01-qa-0606-load.html 
> Assuming all class loaders involved delegate to their parent class loader (as 
> recommended in the API), currently working code, that uses JXPath, should 
> only be affected by this change if the current class loader (the class loader 
> that loaded JXPath) is not in an ancestor/descendant relationship with the 
> context class loader.

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