[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
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=http://www.get.live.com/spaces/features
>
>
>_______________________________________________
>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=http://imagine-msn.com/themes/vibe/default.aspx?locale=en-us&source=hmtagline


_______________________________________________
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=http://imagine-msn.com/themes/vibe/default.aspx?locale=en-us&source=hmtagline