You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Gert Vanthienen (JIRA)" <ji...@apache.org> on 2011/08/18 10:25:27 UTC

[jira] [Created] (CAMEL-4347) Set thread context class loader when starting camel-blueprint routes

Set thread context class loader when starting camel-blueprint routes
--------------------------------------------------------------------

                 Key: CAMEL-4347
                 URL: https://issues.apache.org/jira/browse/CAMEL-4347
             Project: Camel
          Issue Type: Improvement
          Components: camel-blueprint
    Affects Versions: 2.8.0
            Reporter: Gert Vanthienen
            Assignee: Gert Vanthienen
             Fix For: 2.9.0


When routes are getting started by the camel-blueprint component, the thread context classloader at that moment is the container's boot classloader.  This is causing problems for e.g. ActiveMQ object messages that need to get deserialized, because the boot classloader is not aware of classes that might be available inside the container.  The class used for reading the ActiveMQ object messages is http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/ClassLoadingAwareObjectInputStream.java.

We can fix this by setting a more appropriate classloader as the thread context classloader while starting the CamelContext from a Blueprint definition.  I see we also have a similar class in camel-jdbc and there are no doubt other libraries that depend on this classloader being set as well, so this change should help with all of those cases.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CAMEL-4347) Set thread context class loader when starting camel-blueprint routes

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

Claus Ibsen updated CAMEL-4347:
-------------------------------

    Fix Version/s: 2.8.1

Backported to 2.8.1

> Set thread context class loader when starting camel-blueprint routes
> --------------------------------------------------------------------
>
>                 Key: CAMEL-4347
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4347
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-blueprint
>    Affects Versions: 2.8.0
>            Reporter: Gert Vanthienen
>            Assignee: Gert Vanthienen
>             Fix For: 2.8.1, 2.9.0
>
>
> When routes are getting started by the camel-blueprint component, the thread context classloader at that moment is the container's boot classloader.  This is causing problems for e.g. ActiveMQ object messages that need to get deserialized, because the boot classloader is not aware of classes that might be available inside the container.  The class used for reading the ActiveMQ object messages is http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/ClassLoadingAwareObjectInputStream.java.
> We can fix this by setting a more appropriate classloader as the thread context classloader while starting the CamelContext from a Blueprint definition.  I see we also have a similar class in camel-jdbc and there are no doubt other libraries that depend on this classloader being set as well, so this change should help with all of those cases.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Resolved] (CAMEL-4347) Set thread context class loader when starting camel-blueprint routes

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

Gert Vanthienen resolved CAMEL-4347.
------------------------------------

    Resolution: Fixed

Fixed in http://svn.apache.org/viewvc?view=revision&revision=1159171

This fix also sets CamelContext's application context classloader field with the new thread context classloader to ensure the same object can always be retrieved again when necessary.

> Set thread context class loader when starting camel-blueprint routes
> --------------------------------------------------------------------
>
>                 Key: CAMEL-4347
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4347
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-blueprint
>    Affects Versions: 2.8.0
>            Reporter: Gert Vanthienen
>            Assignee: Gert Vanthienen
>             Fix For: 2.9.0
>
>
> When routes are getting started by the camel-blueprint component, the thread context classloader at that moment is the container's boot classloader.  This is causing problems for e.g. ActiveMQ object messages that need to get deserialized, because the boot classloader is not aware of classes that might be available inside the container.  The class used for reading the ActiveMQ object messages is http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/ClassLoadingAwareObjectInputStream.java.
> We can fix this by setting a more appropriate classloader as the thread context classloader while starting the CamelContext from a Blueprint definition.  I see we also have a similar class in camel-jdbc and there are no doubt other libraries that depend on this classloader being set as well, so this change should help with all of those cases.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira