[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] Newbie problem/question

Hi Ali,

Ali Naddaf wrote:

Hello everyone.

I am trying to learn more about the ECF and started with a simple example where there is a simple "echo" service, published by ECF and a client to call that. I am using declarative services and am running in an issue with publishing my service; here is my component.xml for my service:

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"; enable="true" immediate="true" name="ecf.test.one.host">
<implementation class="ecf.test.one.EchoServiceImp"/>
<property name="service.exported.interfaces" type="String" value="*"/>
<property name="service.exported.configs" type="String" value="ecf.generic.server"/>
<property name="org.eclipse.ecf.containerFactoryArgs" type="String" value="ecftcp://localhost:3001/server"/>
<service>
<provide interface="ecf.test.one.echoservice.EchoService"/>
</service>
<reference cardinality="1..1" interface="org.eclipse.ecf.core.IContainerFactory" name="IContainerFactory" policy="static"/>
</scr:component>


and when I start the framework, I get the following exception:

osgi> [log;-0500 2010.04.18 22:34:10:972;INFO;org.eclipse.ecf.osgi.services.distribution;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.distribution;code=0;message=Exception creating container from ContainerTypeDescription=ContainerTypeDescription[name=ecf.generic.server;instantiator=org.eclipse.ecf.provider.generic.GenericContainerInstantiator@1ab28fe;desc=ECF Generic Server;;severity4;exception=org.eclipse.core.runtime.AssertionFailedException: null argument:;children=[]]]
org.eclipse.core.runtime.AssertionFailedException: null argument:
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)
at org.eclipse.ecf.remoteservice.RemoteServiceContainer.<init>(RemoteServiceContainer.java:29)


at org.eclipse.ecf.remoteservice.RemoteServiceContainer.<init>(RemoteServiceContainer.java:38)

at org.eclipse.ecf.osgi.services.distribution.AbstractHostContainerFinder.createMatchingContainer(AbstractHostContainerFinder.java:217)

at org.eclipse.ecf.osgi.services.distribution.AbstractHostContainerFinder.createAndConfigureHostContainers(AbstractHostContainerFinder.java:194)

at org.eclipse.ecf.osgi.services.distribution.DefaultHostContainerFinder.findHostContainers(DefaultHostContainerFinder.java:45)

at org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl.findHostContainers(EventHookImpl.java:173)

at org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl.handleRegisteredServiceEvent(EventHookImpl.java:97)

at org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl.event(EventHookImpl.java:61)

at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyEventHooksPrivileged(ServiceRegistry.java:1143)

at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:743)

at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:711)

at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)

at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)

at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:507)

at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:488)

at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:205)

at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:429)

at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:211)

at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:798)

at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:765)

at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)


[log;-0500 2010.04.18 22:34:10:974;WARNING;org.eclipse.ecf.osgi.services.distribution;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.distribution;code=2;message=org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl:handleRegisteredServiceEvent:No remote service containers found for serviceReference={ecf.test.one.echoservice.EchoService}={component.name=ecf.test.one.host, component.id=0, org.eclipse.ecf.containerFactoryArgs=ecftcp://localhost:3001/server, service.exported.configs=ecf.generic.server, service.exported.interfaces=*, service.id=47}. Service NOT EXPORTED;severity2;exception=null;children=[]]]


I can't figure out what I am missing. Any help is greatly appreciated to get me going.

Hmmm. This is a little puzzeling. The problem seems to be that in AbstractHostContainerFinder is this code (starting on line 215):


               IContainer container = createContainer(serviceReference,
                       containerTypeDescription);
               return new RemoteServiceContainer(container);

The call to new RemoteServiceContainer(container); is apparently throwing the AssertionFailedException/assertion error...as the value of container is apparently null. But I don't quite understand how createContainer could actually return null in your case.

In the example code (org.eclipse.ecf.examples.remoteservices.hello.ds.host), the ds markup is this...and it looks very close to yours:

<implementation class="org.eclipse.ecf.examples.internal.remoteservices.hello.ds.host.HelloComponent"/>
<property name="service.exported.interfaces" type="String" value="*"/>
<property name="service.exported.configs" type="String" value="ecf.generic.server"/>
<property name="org.eclipse.ecf.containerFactoryArgs" type="String" value="ecftcp://localhost:30001/server"/>
<service>
<provide interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
</service>
<reference cardinality="1..1" interface="org.eclipse.ecf.core.IContainerFactory" name="IContainerFactory" policy="static"/>


And this host starts up just fine.

Would you be willing to send me your test projects and let me run/debug using it? This seems to be something wrong/bug in the container finder implementation, but I can't immediately tell what it is.

If you are willing, please just export to zip your projects for the host (no need for the client at the moment), and I will take a look at what's going on.

Thanks,

Scott