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.