groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Denis Jouvin (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (GROOVY-8227) Allow to specify Groovysh (and GroovyShell) class loader different from TCCL
Date Mon, 12 Jun 2017 22:26:01 GMT

    [ https://issues.apache.org/jira/browse/GROOVY-8227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16047143#comment-16047143
] 

Denis Jouvin edited comment on GROOVY-8227 at 6/12/17 10:26 PM:
----------------------------------------------------------------

yes, this is the behavior that I would expect. Unfortunately this is not what happens when
you instanciate and use Groovysh : Some -- or at least one -- of the classes instanciated
in the way still use the TCCL, and thus the given class loader is not properly propagated,
which is IMHO a bug (I will try to provide specific examples tomorrow).


was (Author: djouvin):
yes, this is the behavior that I would expect. Unfortunately this is not what happens when
you instanciate ans use Groovysh : Some or at least one of the classes instanciated in the
way still use the TCCL, and thus the given class loader is not properly propagated, which
is IMHO a bug (I will try to provide specific examples tomorow).

> Allow to specify Groovysh (and GroovyShell) class loader different from TCCL
> ----------------------------------------------------------------------------
>
>                 Key: GROOVY-8227
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8227
>             Project: Groovy
>          Issue Type: Bug
>          Components: groovy-runtime, Groovysh
>    Affects Versions: 2.4.x, 2.5.x
>         Environment: OSGi (Karaf 2.x, 3.X or 4.x)
>            Reporter: Denis Jouvin
>              Labels: classloader, groovysh, groovyshell
>             Fix For: 2.4.x, 2.5.x
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> Allthough the Groovy API seem to allow one to specify the class loader when instanciating
a Groovysh or GroovyShell, internally in some places Groovy will silently use the TCCL (thread
context class loader) and there is no way to avoid that without hacking Groovy and chasing
all the places where {{getThreadContextClassLoader()}} is used.
> This is problematic, especially in OSGi environement, since the TCCL is not compatible
with OSGi principles (i.e. every bundle has its own class loader), and also with some modern
modular containers similar to OSGi. When a class loader is specified in the GroovyShell or
Groovysh creation, Groovy should propagate that class loader correctly (or instanciate children
class loader of that specified class loader), and in no way use the TCCL.
> This may be a dupplicate of [Groovy 4895|https://issues.apache.org/jira/browse/GROOVY-4895]



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message