[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] ClassLoader deadlock issues


I'm glad to see that you are making progress.
The code simplifying the creation of a class contributed by an extension is createExecutableExtension on a IConfigurationElement (IConfigurationElements are subelements of IExtensions).

HTH

PaScaL



"Kirby Bohling" <computerslicer23@xxxxxxxxxxx>
Sent by: equinox-dev-bounces@xxxxxxxxxxx

10/15/2006 10:08 PM

Please respond to
Equinox development mailing list <equinox-dev@xxxxxxxxxxx>

To
equinox-dev@xxxxxxxxxxx
cc
equinox-dev-bounces@xxxxxxxxxxx
Subject
Re: [equinox-dev] ClassLoader deadlock issues






Pascal,

   I'm reasonable sure in my last e-mail I  asked you a question I can
answer myself with more research.  In terms of extensions, it appears that
one way to do it is via extensions.  When you lookup a view, you can find it
in the extension point, then ask for the plugin/bundle that contributed it,
then ask the bundle for it's classloader and create the class via reflection
from using the specific class loader?  It looks like Eclipse probably has
code that will simplify this.

   It looks like I should read Chapters 22 and 23 of the Eclipse RCP book.  
I'm still a little fuzzy on the services stuff, but I'll continue
researching.  Thanks for your help.  I think this will help me eliminate
quite a bit of my buddy loading.  Hopefully that will get quite a bit of
relief.  I'm still pondering how to deal with Spring.  It would be fairly
simple if Spring had some way of allowing me to interact with the class
loader used on a per-bean basis (if I could spec give it the classloader to
use, everything I want to construct is easily constructable from a single
plug-in).  I'll follow up with the Spring lists and my companies resident
Spring experts.

   I'm still thinking about the Serialization issue.  In theory I can
interact with that also, by overloading my classes to serialize the class
loader that should be used for deserialization

   Kirby

>From: "Kirby Bohling" <computerslicer23@xxxxxxxxxxx>
>Reply-To: Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
>To: equinox-dev@xxxxxxxxxxx
>CC: equinox-dev-bounces@xxxxxxxxxxx
>Subject: Re: [equinox-dev] ClassLoader deadlock issues
>Date: Sun, 15 Oct 2006 12:33:09 -0500
>
>
>Pascal,
>
>    I'm reluctant to give up just yet.  My issue isn't that I can't use
>Eclipse's advanced features, I just can't require them.  Similar to Spring,
>I use Spring all the time, but all of the functionality is available
>outside of that.  So I can use Extension Points and Services for
>application initialization and configuration, but they can't be a
>requirement.  I'm not sure if I'm stuck because of the Serialization or
>because of my statement that I can't require Eclipse.
>
>    Your statement that I should use extensions got me thinking...  How
>exactly do Views get access
>to the concrete class?  I just assumed it was thru the buddy loading
>system.  After looking at the buddy loaders, that doesn't seem to be the
>case.  I've been attempting to track down how that does work.  If this is
>the wrong list, or there is documentation (source counts as docs if the
>pointer to the code to read is good enough).  I might be able to use that
>to address my issues.
>
>    I have some pieces that are third parties libraries, and I have control
>over other large sections.  Any help on this would be great.  I've invested
>a great deal of effort into Eclipse, backing out now isn't really an
>option.
>
>Thanks,
>        Kirby
>
>>From: Pascal Rapicault <Pascal_Rapicault@xxxxxxxxxx>
>>Reply-To: Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
>>To: Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
>>CC: equinox-dev@xxxxxxxxxxx, equinox-dev-bounces@xxxxxxxxxxx
>>Subject: Re: [equinox-dev] ClassLoader deadlock issues
>>Date: Fri, 13 Oct 2006 20:41:11 -0400
>>
>>The extension registry == extension / extension points. The registry code
>>is in the org.eclipse.equinox.registry and it runs *outside* of OSGi.
>>Services == OSGi services, but from what you say they don't seem to be an
>>option.
>>
>>PaScaL
>>
>>
>>
>>
>>"Kirby Bohling" <computerslicer23@xxxxxxxxxxx>
>>Sent by: equinox-dev-bounces@xxxxxxxxxxx
>>10/13/2006 08:35 PM
>>Please respond to
>>Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
>>
>>
>>To
>>equinox-dev@xxxxxxxxxxx
>>cc
>>equinox-dev-bounces@xxxxxxxxxxx
>>Subject
>>Re: [equinox-dev] ClassLoader deadlock issues
>>
>>
>>
>>
>>
>>
>>Pascal,
>>
>>Any chance you can point me at documentation about the extension
>>registration (is that Extension points, or do you mean something at the
>>OSGi
>>bundle level?) and services (that I'm pretty sure is an OSGi thing)?  I've
>>
>>poked around a bit and have found myself wanting for better documentation.
>>
>>Ultimately, I do have corners I'll get stuck in, like Serialization for
>>remote messaging.  I'll see if I can get around that.
>>
>>One of the design constraints, is that I can't be tied to Eclipse.  I am
>>part of the tools team at my work, and the tools have to work both inside
>>and outside of Eclipse.  So while aspects of it support Eclipse well, I've
>>
>>been working hard to ensure that they work just fine standalone in SWT
>>applications.
>>
>>    Kirby
>>
>> >From: Pascal Rapicault <Pascal_Rapicault@xxxxxxxxxx>
>> >Reply-To: Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
>> >To: Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
>> >CC: equinox-dev@xxxxxxxxxxx, equinox-dev-bounces@xxxxxxxxxxx
>> >Subject: Re: [equinox-dev] ClassLoader deadlock issues
>> >Date: Fri, 13 Oct 2006 19:58:39 -0400
>> >
>> >Kirby,
>> >
>> >If you are the author of the main and children plug-ins, you should not
>>be
>> >using BuddyLoading as your pluggability mechanism and should instead use
>> >the extension registry or services.
>> >BuddyLoading has been designed to help people integrate libraries that
>>use
>> >reflection and context classloaders as their extension mechanism and
>>they
>> >can't change the code.
>> >
>> >HTH,
>> >
>> >PaScaL
>> >
>> >
>> >
>> >
>> >"Kirby Bohling" <computerslicer23@xxxxxxxxxxx>
>> >Sent by: equinox-dev-bounces@xxxxxxxxxxx
>> >10/13/2006 05:10 PM
>> >Please respond to
>> >Equinox development mailing list <equinox-dev@xxxxxxxxxxx>
>> >
>> >
>> >To
>> >equinox-dev@xxxxxxxxxxx
>> >cc
>> >
>> >Subject
>> >[equinox-dev] ClassLoader deadlock issues
>> >
>> >
>> >
>> >
>> >
>> >
>> >All,
>> >
>> >I've been working with Eclipse, and use Buddy Loaders fairly extensively
>> >so
>> >that core plug-ins can construct objects from their child plug-ins at
>> >runtime.
>> >
>> >The ClassLoader segmentation is causing me lots and lots of issues w/
>> >BuddyLoaders and the deadlock.
>> >
>> >I've seen this thread:
>> >http://dev.eclipse.org/mhonarc/lists/equinox-dev/msg01354.html
>> >
>> >This pretty much exactly covers my case.  Are there any workarounds or
>> >mitigations?  I use object serialization for over the wire communication
>> >and
>> >spring both of which use Global buddy loaders.  Currently my application
>> >deadlocks 9 times out of 10.
>> >
>> >I've been looking into writing my own classloader to deal with the
>>issue.
>> >That hasn't gotten me very far (I've inserted my own classloader that
>> >forces
>> >all class loads to happen on a single threading context, but it's so
>>slow
>> >I
>> >haven't bothered to test it with my real application).  Are the any
>>fixes
>> >or
>> >work arounds?  Any guidelines I can follow to mitigate the problem.  A
>>lot
>> >
>> >the time my application is completely assembled at runtime via
>>reflection.
>> >
>> >     Thanks,
>> >         Kirby
>> >
>> >_________________________________________________________________
>> >Add fun gadgets and colorful themes to express yourself on Windows Live
>> >Spaces
>> >http://clk.atdmt.com/MSN/go/msnnkwsp0070000001msn/direct/01/?href=""> >> >
>> >
>> >_______________________________________________
>> >equinox-dev mailing list
>> >equinox-dev@xxxxxxxxxxx
>> >https://dev.eclipse.org/mailman/listinfo/equinox-dev
>> >
>>
>>
>> >_______________________________________________
>> >equinox-dev mailing list
>> >equinox-dev@xxxxxxxxxxx
>> >https://dev.eclipse.org/mailman/listinfo/equinox-dev
>>
>>_________________________________________________________________
>>Try the new Live Search today!
>>http://imagine-windowslive.com/minisites/searchlaunch/?locale=en-us&FORM=WLMTAG
>>
>>
>>_______________________________________________
>>equinox-dev mailing list
>>equinox-dev@xxxxxxxxxxx
>>https://dev.eclipse.org/mailman/listinfo/equinox-dev
>>
>
>
>>_______________________________________________
>>equinox-dev mailing list
>>equinox-dev@xxxxxxxxxxx
>>https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
>_________________________________________________________________
>Express yourself - download free Windows Live Messenger themes!
>http://clk.atdmt.com/MSN/go/msnnkwme0020000001msn/direct/01/?href=""> >
>_______________________________________________
>equinox-dev mailing list
>equinox-dev@xxxxxxxxxxx
>https://dev.eclipse.org/mailman/listinfo/equinox-dev

_________________________________________________________________
Express yourself - download free Windows Live Messenger themes!
http://clk.atdmt.com/MSN/go/msnnkwme0020000001msn/direct/01/?href="">
_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/equinox-dev