For the second part, effectively, services on clients is not really a best practice... So if i well anderstand you, i can use DOSGI to export my services, and then use XMPP to handle events. Right ?
Michel Selon [email protected]: > 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

