[
https://issues.apache.org/jira/browse/CHAIN-62?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Simone Tripodi updated CHAIN-62:
--------------------------------
Description:
The {{CatalogFactory#getInstance()}} is using thread context ClassLoader which
gives undefined behavior under OSGi.
This leads to problems with {{ConfigCatalogRule}} and especially
{{LookupCommand}}.
Two bundles wired to same commons chain may use different catalog factories
when parsing commands from XML or looking up commands from catalog.
I think that {{CatalogFactory#getClassLoader()}} might allow disabling use of
thread context class loader - either
a) detect that it is used inside OSGi framework, or
b) provide static boolean flag to disable it
Combination of both might be via use of bundle activator that would set the
flag. The activator would be used only under OSGi acting as "auto-detection"
and still some other bundle might revert to default if required.
Ales
was:
The CatalogFactory#getInstance() is using thread context ClassLoader which
gives undefined behavior under OSGi.
This leads to problems with ConfigCatalogRule and especislly LookupCommand.
Two bundles wired to same commons chain may use different catalog factories
when parsing commands from XML or looking up commands from catalog.
I think that CatalogFactory#getClassLoader() might allow disabling use of
thread context class loader - either
a) detect that it is used inside OSGi framework, or
b) provide static boolean flag to disable it
Combination of both might be via use of bundle activator that would set the
flag. The activator would be used only under OSGi acting as "auto-detection"
and still some other bundle might revert to default if required.
Ales
> Use of thread context ClassLoader under OSGi
> --------------------------------------------
>
> Key: CHAIN-62
> URL: https://issues.apache.org/jira/browse/CHAIN-62
> Project: Commons Chain
> Issue Type: Bug
> Affects Versions: 1.2
> Environment: OSGi
> Reporter: Ales Dolecek
> Priority: Minor
> Attachments: CatalogFactory.patch
>
>
> The {{CatalogFactory#getInstance()}} is using thread context ClassLoader
> which gives undefined behavior under OSGi.
> This leads to problems with {{ConfigCatalogRule}} and especially
> {{LookupCommand}}.
> Two bundles wired to same commons chain may use different catalog factories
> when parsing commands from XML or looking up commands from catalog.
> I think that {{CatalogFactory#getClassLoader()}} might allow disabling use of
> thread context class loader - either
> a) detect that it is used inside OSGi framework, or
> b) provide static boolean flag to disable it
> Combination of both might be via use of bundle activator that would set the
> flag. The activator would be used only under OSGi acting as "auto-detection"
> and still some other bundle might revert to default if required.
> Ales
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira