You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by mn...@free.fr on 2011/03/14 14:41:50 UTC

Remote iPojo and Event Admin

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: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Remote iPojo and Event Admin

Posted by Michel Narouman <mn...@free.fr>.
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 mna.ipojo@free.fr:

> 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 <bo...@gmail.com>:
>
> > 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, <mn...@free.fr> 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: users-unsubscribe@felix.apache.org
> > > For additional commands, e-mail: users-help@felix.apache.org
> > >
> > >
> >
> >
> > --
> > Pierre Bourret
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Remote iPojo and Event Admin

Posted by mn...@free.fr.
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 <bo...@gmail.com>:

> 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, <mn...@free.fr> 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: users-unsubscribe@felix.apache.org
> > For additional commands, e-mail: users-help@felix.apache.org
> >
> >
>
>
> --
> Pierre Bourret
>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Remote iPojo and Event Admin

Posted by Bourret Pierre <bo...@gmail.com>.
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, <mn...@free.fr> 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: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>


-- 
Pierre Bourret