Great, it's work for the service exposition !! Here, we use xmpp. I'm not an expert of this protocole. Smack is the API used. I'm going to see want i can do with it... If you have some recommandations, there are wellcome !!
Best regards ! Michel Selon Bourret Pierre <[email protected]>: > Hello, > > 1) First, despite the fact that you've specified "osgi.remote.*" properties > for your component instance declaration, these properties are not exposed > with the service you provide. You can check that by looking at the service > exposed by your component in the Webconsole : none of the "osgi.remote.*" > properties you specified should be present, so DOSGi cannot export the > service. > > You must change the component specification to explicitly expose these > properties as service properties, e.g. : > > <!-- The synchronous donut provider --> > <component classname="fr.eventadmin.test.provider.DonutProviderImpl" > name="synchronous-donut-provider"> > <!-- Expose the donut provider service --> > <provides specifications="fr.eventadmin. > test.remote.DonutProvider"> > <property name="name" field="m_name" value="Unknown > donut vendor" /> > *<!-- Properties inside the provides element, so they > are service properties -->* > * <property name="osgi.remote.interfaces" > type="java.lang.String" value="*" />* > * <property name="osgi.remote.configuration.type" > type="java.lang.String" value="org.apache.cxf.ws" />* > * <property name="** > osgi.remote.configuration.pojo.address**" type="java.lang.String" value="**" > />* > </provides> > <!-- Donut publisher --> > <ev:publisher name="donut-publisher" field="m_publisher" > topics="food/donuts" data-key="food" synchronous="true" /> > </component> > > <!-- Instance declaration --> > <instance component="synchronous-donut-provider" name="Begniers de > Pomme"> > <property name="name" value="Begniers de pomme" /> > <property name="osgi.remote.configuration.pojo.address" > value="http://localhost:9094/Donut" /> > </instance> > > With these metadata, your component endpoint should now be accessible from > the configured address. > > > 2) Then, by doing this, only the service you provide is exported by DOSGi, > not the event part. Event handling is achieved by using the EventAdmin > service (not directly, but via the event-admin-handler), and this service > uses whiteboard pattern to notify the event listeners : each listener must > provided a EventHandler service, consumed by the EventAdmin. > So if you want your (remote) consumers to receive events fired be the donut > provider, you have to import all the EventHandler services provided by the > consumers on the framework running the provider. This may be hard to achieve > because of technical restriction (clients are not supposed to export any > service, server must discover and import the clients, ...). > However, events and services are very different concepts, so exporting > events with DOSGi, designed for services, may be complicated and painful... > Maybe you could use an event based protocol/API to share your events between > framework instances, as XMPP, AMQP, JMS, ... > > > > On 14 March 2011 14:41, <[email protected]> wrote: > > > Hi everyboby ! > > > > I want to use the publisher/subscriber principe using remote objects. So i > > used > > this project > > ( > > http://people.apache.org/~clement/ipojo/tutorials/dosgi/dosgi-tutorial.zip) > > and > > try to make it works. > > Every thing's ok ! > > > > then, from sources, i get the test projet > > .\trunk\ipojo\tests\handler\eventadmin\ and try to make it works too. > > Every thing's ok ! > > > > Now, when i merge both, no web service are created... Components are well > > started but it seams that ev:publisher is not handle. Here the metadata for > > the > > provider : > > > > <?xml version="1.0" encoding="UTF-8"?> > > <ipojo > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="org.apache.felix.ipojo > > http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd" > > xmlns="org.apache.felix.ipojo" > > xmlns:ev="org.apache.felix.ipojo.handlers.event"> > > > > <!-- The (asynchronous) donut provider --> > > <component > > classname="fr.eventadmin.test.provider.DonutProviderImpl" > > name="donut-provider" > > > <!-- Expose the donut provider service --> > > <provides > > > > specifications="fr.eventadmin.test.remote.DonutProvider"> > > <property > > name="name" > > field="m_name" > > value="Unknown donut vendor" /> > > </provides> > > <!-- Donut publisher --> > > <ev:publisher > > name="donut-publisher" > > field="m_publisher" > > topics="food/donuts" > > data-key="food" > > synchronous="false" /> > > </component> > > > > <!-- The (asynchronous) donut provider using publishes --> > > <component > > classname="fr.eventadmin.test.provider.DonutProviderImpl" > > name="donut-provider-publishes"> > > <!-- Expose the donut provider service --> > > <provides > > > > specifications="fr.eventadmin.test.remote.DonutProvider"> > > <property > > name="name" > > field="m_name" > > value="Unknown donut vendor" /> > > </provides> > > <!-- Donut publisher --> > > <ev:publishes > > name="donut-publisher" > > field="m_publisher" > > topics="food/donuts" > > dataKey="food" > > synchronous="false" /> > > </component> > > > > <!-- The synchronous donut provider --> > > <component > > classname="fr.eventadmin.test.provider.DonutProviderImpl" > > name="synchronous-donut-provider"> > > <!-- Expose the donut provider service --> > > <provides > > > > specifications="fr.eventadmin.test.remote.DonutProvider"> > > <property > > name="name" > > field="m_name" > > value="Unknown donut vendor" /> > > </provides> > > <!-- Donut publisher --> > > <ev:publisher > > name="donut-publisher" > > field="m_publisher" > > topics="food/donuts" > > data-key="food" > > synchronous="true" /> > > </component> > > > > <!-- The synchronous donut provider using dataKey --> > > <component > > classname="fr.eventadmin.test.provider.DonutProviderImpl" > > name="synchronous-donut-provider-2"> > > <!-- Expose the donut provider service --> > > <provides > > > > specifications="fr.eventadmin.test.remote.DonutProvider"> > > <property > > name="name" > > field="m_name" > > value="Unknown donut vendor" /> > > </provides> > > <!-- Donut publisher --> > > <ev:publisher > > name="donut-publisher" > > field="m_publisher" > > topics="food/donuts" > > dataKey="food" > > synchronous="true" /> > > </component> > > > > <!-- The (asynchronous) donut event provider --> > > <component > > > > classname="fr.eventadmin.test.provider.DonutEventProviderImpl" > > name="donut-event-provider"> > > <!-- Expose the donut provider service --> > > <provides > > > > specifications="fr.eventadmin.test.remote.DonutProvider"> > > <property > > name="name" > > field="m_name" > > value="Unknown donut vendor" /> > > </provides> > > <!-- Raw events publisher --> > > <ev:publisher > > name="event-publisher" > > field="m_publisher" > > topics="food/donuts" > > synchronous="false" /> > > </component> > > > > <!-- The synchronous donut event provider --> > > <component > > > > classname="fr.eventadmin.test.provider.DonutEventProviderImpl" > > name="synchronous-donut-event-provider"> > > <!-- Expose the donut provider service --> > > <provides > > > > specifications="fr.eventadmin.test.remote.DonutProvider"> > > <property > > name="name" > > field="m_name" > > value="Unknown donut vendor" /> > > </provides> > > <!-- Raw events publisher --> > > <ev:publisher > > name="event-publisher" > > field="m_publisher" > > topics="food/donuts" > > synchronous="true" /> > > </component> > > > > <!-- The (asynchronous) event provider --> > > <component > > > > classname="fr.eventadmin.test.provider.AsyncEventProviderImpl" > > name="event-provider"> > > <!-- Expose the donut provider service --> > > <provides > > > > specifications="fr.eventadmin.test.remote.DonutProvider"> > > <property > > name="name" > > field="m_name" > > value="Unknown donut vendor" /> > > </provides> > > <!-- Direcly interacts with the Event Admin service --> > > <requires > > field="m_ea" /> > > </component> > > > > <!-- The synchronous event provider --> > > <component > > > > classname="fr.eventadmin.test.provider.SyncEventProviderImpl" > > name="synchronous-event-provider"> > > <!-- Expose the donut provider service --> > > <provides > > > > specifications="fr.eventadmin.test.remote.DonutProvider"> > > <property > > name="name" > > field="m_name" > > value="Unknown donut vendor" /> > > </provides> > > <!-- Direcly interacts with the Event Admin service --> > > <requires > > field="m_ea" /> > > </component> > > > > <!-- Example instances --> > > <instance > > component="synchronous-donut-provider" > > name="Begniers de Pomme"> > > <property > > name="name" > > value="Begniers de pomme" /> > > <property > > name="osgi.remote.interfaces" > > value="*" /> > > <property > > name="osgi.remote.configuration.type" > > value="org.apache.cxf.ws" /> > > <property > > name="osgi.remote.configuration.pojo.address" > > value="http://localhost:9094/Donut" /> > > </instance> > > </ipojo> > > > > On the iPojo webConsole, i see the "Begniers de Pomme" instance well > > created but > > nothing appears on http://localhost:9094/Donut?wsdl > > > > What's wrong ? > > > > Regards. > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > > > -- > Pierre Bourret > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

