[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [ecf-dev] Consuming a CXF/DOSGi based Service with ECF Client?
|
Marcus,
On 6/22/2011 5:35 AM, Marcus Engelhardt wrote:
I think CXF/DOSGi does register an XML description of the service. In
case of my test service this look like:
<?xml version="1.0" encoding="UTF-8"?>
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
<endpoint-description>
<property name="endpoint.framework.uuid"
value="7464d128-cdc6-4817-bba8-c89ac18f2d54" />
<property name="endpoint.id"
value="http://localhost:9191/libraryservice" />
<property name="endpoint.package.version.de.bht.pfk.serviceinterface"
value="0.0.0" />
<property name="endpoint.service.id" value-type="Long" value="31" />
<property name="objectClass">
<array>
<value>de.bht.pfk.serviceinterface.LibraryServiceREST</value>
</array>
</property>
<property name="org.apache.cxf.rs.address"
value="http://localhost:9191/libraryservice" />
<property name="org.apache.cxf.rs.databinding" value="jaxb" />
<property name="service.imported" value="true" />
<property name="service.imported.configs">
<array>
<value>org.apache.cxf.rs</value>
</array>
</property>
<property name="service.intents">
<array>
<value>HTTP</value>
</array>
</property>
</endpoint-description>
</endpoint-descriptions>
On the other hand, ECF seems to write the serialization of an
IServiceInfo object (wrapped into an
org.eclipse.ecf.provider.zookeeper.core.AdvertisedService object) to
the ZooKeeper node. The output of ZooKeeper for such a node is:
¼Ý ?sr ?java.util.HashMap?+-+?`Ð? ?F
loadFactorI thresholdxp?@ ? t ?discovery.service.locationsr
?java.net.URI¼?x.C×I½? ?L ?stringt ?Ljava/lang/String;xpt
Cecf.osgirsvc://localh
ost:9278/osgirsvc_9s+cJod3za4BEOTmyD7Y6i4nSD4=xt
?node.property.name.protocolsur
?[Ljava.lang.String;¡ÊVþÚ?{G? xp ?t defaultt
?node.property.name.servicesuq
~ ?t ?ecf.osgirsvct §node.property.name.nat ?ianat
?discovery.service.priority
sr ?java.lang.Integer?Ôáñ¸?ç8? ?I ?valuexr ?java.lang.Numberå¼ò??öÓï?
xp t ?
discovery.service.weightq ~ ?t node.property.service.propertiessr
+org.eclipse.
ecf.discovery.ServiceProperties±ºƒ¢ô-ƒ2? ?L ?propst
?Ljava/util/Properties;xpsr
¶java.util.Properties9?ðzp6>ÿ? ?defaultsq ~ ?xr
?java.util.Hashtable?+¤%!Jõ©? ?F
loadFactorI thresholdxp?@ ? t ?endpoint.service.idt ?58t Fen
dpoint.package.version.org.eclipse.ecf.examples.remoteservices.hellot
?3.0.0t ?o
bjectClasst 4org.eclipse.ecf.examples.remoteservices.hello.IHellot
?endpoint.fra
mework.uuidt $3815d16d-d0fb-40b8-8922-260ebb056fb8t
?remote.intents.supportedt ?
passByValue exactlyOnce orderedt ?ecf.endpoint.id.nst
¶ecf.namespace.r_osgit ?re
mote.configs.supportedt ¤ecf.r_osgi.peert ?endpoint.idt
?r-osgi://localhost:9278
t ?service.imported.configsq ~ )xpt ?node.property.service.namet
%osgirsvc_9s+cJ
od3za4BEOTmyD7Y6i4nSD4=t ?node.property.name.scopeq ~ x
The method
org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer::registerService(IServiceInfo
serviceInfo) delegates the registration of the service infos to
org.eclipse.ecf.provider.zookeeper.node.internal.WatchManager::publish(AdvertisedService
published) method.
I think I have to write a new WatchManager implementation to read the
CXF/DOSGi XML service descriptions and to build IServiceInfo objects
based on these. Is that feasable? Should I replace/extend the
implementation or is there a way to register a new one?
I shouldn't be necessary to modify the zookeeper discovery
implementation in this way.
From your earlier note you said:
>Unfortunately, the ECF based consumer is not notified by the ZooKeeper
discovery service about the presence >of the CXF/DOSGi based service. I
am not sure why this is happening.
I think we should first attempt to diagnose why this is (not)
happening. Are you using CXF's zookeeper impl to publish the service
when exported by CXF? Perhaps there is something about the
configuration of that (e.g. port selection, etc) that is not compatible
with the ECF consumer zookeeper (?).
Scott