The reasoning was to make the TCCL consistent regardless of what thread was
starting a bundle.  We were finding scenarios where the thread starting the
bundle did not have the ContextFinder set properly.  Could you open a bug
to discuss this more.  I would like to understand your scenario more.
Perhaps we can come up with a solution that can solve both issues.  Or we
could at least provide you with an option to disable TCCL setting in the
framework.

Tom




|------------>
| From:      |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Andy Wilkinson <[email protected]>                             
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Equinox development mailing list <[email protected]>                   
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |08/21/2009 08:29 AM                                                          
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |[equinox-dev] Change in TCCL when BundleActivator.start() is called          
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|





Hi,

I've been looking into a problem with a user's application that was
working ok on top of Equinox 3.4.2, but is now failing with a
ClassNotFoundException when running on top of Equinox 3.5.

We have some code that, prior to starting a bundle, sets the Bundle's
ClassLoader as the TCCL, and then restores the old TCCL once start has
completed. This works as expected on 3.4.2. Running on 3.5, the Bundle's
ClassLoader is overwritten by a ContextFinder instance as part of
Equinox's start processing.

I've done some archaeology and I think I've tracked it back to the
changes made under 258209:

"This patch also ensures the TCCL is set to the ContextFinder for each
call to BundleActivator.start()."

I'm interested to learn about the reasoning behind this change. It
strikes me as a little bit odd that ContextFinder is the TCCL as this is
something of an Equinox implementation detail, where's the Bundle's
ClassLoader is not. As far as I know, the OSGi spec is silent on what
the TCCL should be when an activator is called so I realise that Equinox
has some freedom in this area. That said, the change has broken an
application that works fine on 3.4.2 so, in our case at least, we'd
prefer that things were the way they were before.

Thanks,
Andy
_______________________________________________
equinox-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/equinox-dev

<<inline: graycol.gif>>

<<inline: ecblank.gif>>

_______________________________________________
equinox-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to