[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [ecf-dev] Debugging RFC 119
|
Scott,
On May 19, 2009, at 3:40 PM, Scott Lewis wrote:
Hi Bryan,
Bryan Hunt wrote:
Scott,
First off, I was able to get DS to start after the bundle that
creates the container. My problem was that I was creating the
container in the Application instead of the Activator, and it seems
that the Application gets called after all bundles have been
activated. I moved the creation of the container to the Activator,
and now I see my service being used by R-OSGi, and
ecf.osgi.services.distribution. Goodness :)
Great.
<stuff deleted>
It could be that I'm just not communicating effectively here.
Here's my current thinking (with rather limited knowledge of ECF)
on how it should work. If you see a service registered with
osgi.remote.interfaces = * and there are no containers, ignore the
service (with the bug fix for the NPE, I think this happens now).
When an appropriate container is constructed, hook the listener for
any new services, and look for any already existing registered
services with osgi.remote.interfaces = * and export them as remote
services.
It appears that ECF currently does not look for services registered
prior to the construction of the container.
Ok, I see. Just so I understand...the expectation would be that
when a remote service container is created that it would look for
remote services registered prior to the construction of the
container, and when/if found would subsequently distribute them. Is
that right?
Yep, that's right.
If I've misunderstood this point, then maybe there's another bug
lurking here.
We don't have this functionality now, admittedly. I have to think
some about the implications of such an approach...i.e. how would it
work...but perhaps you would open a bug to this effect and we can
track it and discuss there? This isn't something that we can/could
have instantaneously, but the basic mechanisms are there to support
it (e.g. IContainerManagerListener), so I believe it could be
supported without major API changes.
I have one other thing to say about this (I understand now that what
you are asking for is not this, but I thought I would point it
because it does handle related use cases)...is that we also have two
service interfaces: IHostContainerFinder and IProxyContainerFinder
(which are implemented by DefaultHostContainerFinder and
DefaultProxyContainerFinder respectively). It's also possible for
applications to register themselves as IHost/ProxyContainerFinders,
and implement 'lazy' container creation (as opposed to the eager
container creation you are doing now). That is, a custom
IHostContainerFinder could be defined like this
IRemoteServiceContainer[] findHostContainers(ServiceReference
serviceReference, String[] remoteInterfaces,String[]
remoteConfigurationType, String[] remoteRequiresIntents) {
// Here is the custom code
if (rsContainer == null) {
IContainer container = createContainer();
rsContainer = new RemoteServiceContainer(container,
(IRemoteServiceContainerAdapter)
container.getAdapter(IRemoteServiceContainerAdapter.class));
}
return new IRemoteServiceContainer[] { rsContainer };
}
This way only if remote services are actually registered will a
container be created/used...i.e. if no remote services are
registered this code will never be called.
This approach might actually work for me. I'll look into this more.
I understand now that this is not what you are looking for, but I
also am working on some documenting about different ways to use/
customize the ECF RFC119 implementation and this addresses some use
cases as well.
<stuff deleted>
Does this make sense?
Yep, that makes sense. The problem I see here is that my remote
services should not have to depend on the container manager. DS
can register my services in any order, so for this technique to
work, each service would have to implement this code in addition to
checking whether or not the container already existed.
OK, sounds good. Lets discuss further and details on the new bug.
Created https://bugs.eclipse.org/bugs/show_bug.cgi?id=277008
Thanks,
Scott
_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ecf-dev