Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [riena-dev] Interface not visible from class loader!

Hi Christian,

Christian Campo wrote:
Hi Olaf, Scott,

@Olaf,

I think your solution will work, but I am not a big fan of looking at the call stack. Also your solution confuses me because some variables like CLASSCONTEXT are static. Are you sure that this solution works even if multiple threads try to create a proxy at the same time with different bundles trying to do that ?

Not sure why that is any better than the buddy policy. Also the buddy policy thing not only deals with the interface itself but also with all return values or paramters. If they are not in the same package as the interface they need to be buddy to. Your solution would not help anymore.

@Scott: While that solution should work I guess, I am afraid that it makes the system way slower. I have already read somewhere in the internet that buddy policies are a timing problem. Because they mean that for every class the classloaded search a large list of bundles. If it would search all bundles, I believe the result could be even worse. Since they are not only consulted for the interfaces but possibly also for return values and parameters, I am not sure that way is a good idea.

You are right that Dynamic-ImportPackage can be relatively slow, but compared to the deserialization and i/o in most environments it's not going to be a problem.


but thanks for the input. I know BuddyPolicies are not ideal but they are currently the best way to handle this problem I know.

Buddy policies can be used, but they have their own disadvantages...for example with some VMs it has been possible to get deadlocks. Also, they only work with Equinox (i.e. they are not OSGi but rather Equinox specific)...and except for the global policy there can/will be dependency issues (for example, having interface plugins (used to create proxies) depend upon part/parts of Riena).

Scott




Back to the top