On 2/16/2016 7:12 AM, Johannes Utzig wrote:
OK, I made it further (I had an issue with SCR).
Now I got my remote service running with ECF using 'ecf.generic.server'.
I then tried to switch to 'ecf.r_osgi.peer'. It looks like the service is
exported, the provider side shows:

<stuff deleted>

Yes, the r-osgi provider (by default) exports all EventAdmin topics and unfortunately Eclipse RCP apps send events to topics that cannot be serialized.

Now I am down to these errors on consumer side:

ChannelEndpoint;<init>(factory=ch.ethz.iks.r_osgi.impl.TCPChannelFactory@31cdb74a,endpointAddress=r-osgi://UTZIGJ02.seeb
urger.de:9278)
ChannelEndpoint;<init>(channel=TCPChannel
(r-osgi://UTZIGJ02.seeburger.de:62762);remoteAddress=r-osgi://UTZIGJ02.seeburg
er.de:62762;localAddress=r-osgi://UTZIGJ02.seeburger.de:9278)
ChannelEndpoint;send(msg=[LEASE] - XID: 18695, services: , topics:
[];remoteAddress=r-osgi://UTZIGJ02.seeburger.de:9278)

ChannelEndpoint;handleMessage(msg=[LEASE] - XID: 18695, services: , topics:
[];remoteAddress=r-osgi://UTZIGJ02.seeburger
.de:62762)
ChannelEndpoint;reply(msg=[LEASE] - XID: 18695, services: , topics:
[];remoteAddress=r-osgi://UTZIGJ02.seeburger.de:6276


2016-02-16 16:08:51,074 | WARN  | cator Dispatcher | remoteserviceadmin
| 60 - org.eclipse.ecf.osgi.services.remoteserviceadmin -
4.3.300.v20160114-0324 |
org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.remoteserviceadmin;code=2;message=org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin:doImportService:getRemoteServiceReferences
return null for
targetID=r-osgi://UTZIGJ02.seeburger.de:9278,idFilter=[Lorg.eclipse.ecf.core.identity.ID;@2c1c090f,intf=com.seeburger.remote.osgi.MyRemoteService,rsFilter=(&(ecf.rsvc.id=240))
on
rsContainerID=r-osgi://UTZIGJ02.seeburger.de:9278;severity2;exception=null;children=[]]
2016-02-16 16:08:51,075 | ERROR | cator Dispatcher | remoteserviceadmin
| 60 - org.eclipse.ecf.osgi.services.remoteserviceadmin -
4.3.300.v20160114-0324 |
org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.remoteserviceadmin;code=4;message=org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin:importService:selectRemoteServiceReference
returned null for
rsRefs=[],targetID=r-osgi://UTZIGJ02.seeburger.de:9278,idFilter=[Lorg.eclipse.ecf.core.identity.ID;@2c1c090f,interfaces=[com.seeburger.remote.osgi.MyRemoteService],rsFilter=(&(ecf.rsvc.id=240)),rsContainerID=r-osgi://UTZIGJ02.seeburger.de:9278;severity4;exception=RemoteReferenceNotFoundException[targetID=r-osgi://UTZIGJ02.seeburger.de:9278,
idFilter=[r-osgi://UTZIGJ02.seeburger.de:9278],
interfaces=[com.seeburger.remote.osgi.MyRemoteService],
rsFilter=(&(ecf.rsvc.id=240))];children=[]]
RemoteReferenceNotFoundException[targetID=r-osgi://UTZIGJ02.seeburger.de:9278,
idFilter=[r-osgi://UTZIGJ02.seeburger.de:9278],
interfaces=[com.seeburger.remote.osgi.MyRemoteService],
rsFilter=(&(ecf.rsvc.id=240))]
        at
org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin.importService(RemoteServiceAdmin.java:2388)[60:org.eclipse.ecf.osgi.services.remoteserviceadmin:4.3.300.v20160114-0324]
        at
org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin.importService(RemoteServiceAdmin.java:440)[60:org.eclipse.ecf.osgi.services.remoteserviceadmin:4.3.300.v20160114-0324]
        at
org.eclipse.ecf.osgi.services.remoteserviceadmin.AbstractTopologyManager.handleECFEndpointAdded(AbstractTopologyManager.java:295)[60:org.eclipse.ecf.osgi.services.remoteserviceadmin:4.3.300.v20160114-0324]
        at
org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManagerImpl.handleEndpointAdded(BasicTopologyManagerImpl.java:104)[59:org.eclipse.ecf.osgi.services.distribution:2.1.0.v20160114-0324]
        at
org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManagerImpl.endpointChanged(BasicTopologyManagerImpl.java:181)[59:org.eclipse.ecf.osgi.services.distribution:2.1.0.v20160114-0324]
        at
org.eclipse.ecf.internal.osgi.services.distribution.Activator$ProxyEndpointEventListener.deliverSafe(Activator.java:206)[59:org.eclipse.ecf.osgi.services.distribution:2.1.0.v20160114-0324]
        at
org.eclipse.ecf.internal.osgi.services.distribution.Activator$ProxyEndpointEventListener.endpointChanged(Activator.java:183)[59:org.eclipse.ecf.osgi.services.distribution:2.1.0.v20160114-0324]
        at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$1.dispatchEvent(EndpointDescriptionLocator.java:219)[60:org.eclipse.ecf.osgi.services.remoteserviceadmin:4.3.300.v20160114-0324]
        at
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.10.2.v20150203-1939.jar:]
        at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)[org.eclipse.osgi-3.10.2.v20150203-1939.jar:]
2016-02-16 16:08:51,080 | ERROR | cator Dispatcher | remoteserviceadmin
| 60 - org.eclipse.ecf.osgi.services.remoteserviceadmin -
4.3.300.v20160114-0324 |
org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.remoteserviceadmin;code=4;message=org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManagerImpl:handleRemoteAdminEvent.IMPORT_ERROR:Import
error with event=RemoteServiceAdminEvent[containerID=null, getType()=5,
getSource()=org.eclipse.ecf.osgi.services.remoteserviceadmin_4.3.300.v20160114-0324
[60],
getException()=RemoteReferenceNotFoundException[targetID=r-osgi://UTZIGJ02.seeburger.de:9278,
idFilter=[r-osgi://UTZIGJ02.seeburger.de:9278],
interfaces=[com.seeburger.remote.osgi.MyRemoteService],
rsFilter=(&(ecf.rsvc.id=240))], getImportReference()=null,
getExportReference()=null];severity4;exception=null;children=[]]


Any pointers what I might be doing wrong?

It appears to me that there could be some confusion about the endpoints discovered and used on the client. This output (port numbers)

ChannelEndpoint;<init>(factory=ch.ethz.iks.r_osgi.impl.TCPChannelFactory@31cdb74a,endpointAddress=r-osgi://UTZIGJ02.seeb
urger.de:9278)
ChannelEndpoint;<init>(channel=TCPChannel
(r-osgi://UTZIGJ02.seeburger.de:62762);remoteAddress=r-osgi://UTZIGJ02.seeburg
er.de:62762;localAddress=r-osgi://UTZIGJ02.seeburger.de:9278)
ChannelEndpoint;send(msg=[LEASE] - XID: 18695, services: , topics:
[];remoteAddress=r-osgi://UTZIGJ02.seeburger.de:9278)

ChannelEndpoint;handleMessage(msg=[LEASE] - XID: 18695, services: , topics:
[];remoteAddress=r-osgi://UTZIGJ02.seeburger
.de:62762)
ChannelEndpoint;reply(msg=[LEASE] - XID: 18695, services: , topics:
[];remoteAddress=r-osgi://UTZIGJ02.seeburger.de:6276


suggests there are several endpoints by UTZIGJ02.seeburg er.de, and perhaps the consumer is attempting to connect with the wrong one?

As a suggestion it might be useful to use the xml/EDEF on the consumer to control discovery and import. Involving network discovery (zookeeper in this case) add an extra dimension of complexity that might help understand better the dynamics and timing of what's going on. There is an example of using EDEF for discovery with the rosgi provider here [1].

Scott

[1] http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rosgi


Thanks,
Johannes



--
View this message in context: 
http://karaf.922171.n3.nabble.com/Proposal-Lightweight-standalone-remote-OSGi-implementation-for-karaf-cellar-tp4045343p4045388.html
Sent from the Karaf - Dev mailing list archive at Nabble.com.

Reply via email to