Prototype scope doesn't work with osgi:service

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Prototype scope doesn't work with osgi:service

sorin7486
Hi all,


            I need to declare a service that has scope="prototype" but it
doesn't seem to work. Here's what I did:

<bean id="randomFileListFTPClient"
class="de.edigrid.util.servicemix.strategy.RandomFileListFTPClient"
scope="prototype"/>
<osgi:service id="randomFileListFTPClientService"
ref="randomFileListFTPClient"
interface="org.apache.commons.net.ftp.FTPClient" />


            I also tried scope="bundle" and it's the same thing. I expected
that to work. Any ideas ?


thank you,
                Sorin.
Reply | Threaded
Open this post in threaded view
|

Re: Prototype scope doesn't work with osgi:service

Guillaume Nodet
Administrator
What kind of behavior do you expect ?
OSGi does not support a per-invocation creation so a single service
(or possibly one per calling bundle) is created.
If you looking for a per-invocation proxy, maybe using a spring proxy
would help.

On Mon, Sep 5, 2011 at 14:24, Sorin Silaghi <[hidden email]> wrote:

> Hi all,
>
>
>            I need to declare a service that has scope="prototype" but it
> doesn't seem to work. Here's what I did:
>
> <bean id="randomFileListFTPClient"
> class="de.edigrid.util.servicemix.strategy.RandomFileListFTPClient"
> scope="prototype"/>
> <osgi:service id="randomFileListFTPClientService"
> ref="randomFileListFTPClient"
> interface="org.apache.commons.net.ftp.FTPClient" />
>
>
>            I also tried scope="bundle" and it's the same thing. I expected
> that to work. Any ideas ?
>
>
> thank you,
>                Sorin.
>



--
------------------------
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com
Reply | Threaded
Open this post in threaded view
|

Re: Prototype scope doesn't work with osgi:service

sorin7486
I'm trying to create a service that would behave exactly as a prototype
bean. I'll give spring proxy a look.


Thanks.

On Mon, Sep 5, 2011 at 3:36 PM, Guillaume Nodet <[hidden email]> wrote:

> What kind of behavior do you expect ?
> OSGi does not support a per-invocation creation so a single service
> (or possibly one per calling bundle) is created.
> If you looking for a per-invocation proxy, maybe using a spring proxy
> would help.
>
> On Mon, Sep 5, 2011 at 14:24, Sorin Silaghi <[hidden email]> wrote:
> > Hi all,
> >
> >
> >            I need to declare a service that has scope="prototype" but it
> > doesn't seem to work. Here's what I did:
> >
> > <bean id="randomFileListFTPClient"
> > class="de.edigrid.util.servicemix.strategy.RandomFileListFTPClient"
> > scope="prototype"/>
> > <osgi:service id="randomFileListFTPClientService"
> > ref="randomFileListFTPClient"
> > interface="org.apache.commons.net.ftp.FTPClient" />
> >
> >
> >            I also tried scope="bundle" and it's the same thing. I
> expected
> > that to work. Any ideas ?
> >
> >
> > thank you,
> >                Sorin.
> >
>
>
>
> --
> ------------------------
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>
Reply | Threaded
Open this post in threaded view
|

Re: Prototype scope doesn't work with osgi:service

Johan Edstrom-2
In reply to this post by sorin7486
Use a servicefactory.

On Sep 5, 2011, at 6:24 AM, Sorin Silaghi wrote:

> Hi all,
>
>
>            I need to declare a service that has scope="prototype" but it
> doesn't seem to work. Here's what I did:
>
> <bean id="randomFileListFTPClient"
> class="de.edigrid.util.servicemix.strategy.RandomFileListFTPClient"
> scope="prototype"/>
> <osgi:service id="randomFileListFTPClientService"
> ref="randomFileListFTPClient"
> interface="org.apache.commons.net.ftp.FTPClient" />
>
>
>            I also tried scope="bundle" and it's the same thing. I expected
> that to work. Any ideas ?
>
>
> thank you,
>                Sorin.

Reply | Threaded
Open this post in threaded view
|

Re: Prototype scope doesn't work with osgi:service

Guillaume Nodet
Administrator
The factory result is cached by the framework on a per bundle basis.

On Monday, September 5, 2011, Johan Edstrom <[hidden email]> wrote:

> Use a servicefactory.
>
> On Sep 5, 2011, at 6:24 AM, Sorin Silaghi wrote:
>
>> Hi all,
>>
>>
>>            I need to declare a service that has scope="prototype" but it
>> doesn't seem to work. Here's what I did:
>>
>> <bean id="randomFileListFTPClient"
>> class="de.edigrid.util.servicemix.strategy.RandomFileListFTPClient"
>> scope="prototype"/>
>> <osgi:service id="randomFileListFTPClientService"
>> ref="randomFileListFTPClient"
>> interface="org.apache.commons.net.ftp.FTPClient" />
>>
>>
>>            I also tried scope="bundle" and it's the same thing. I
expected
>> that to work. Any ideas ?
>>
>>
>> thank you,
>>                Sorin.
>
>

--
------------------------
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com
Reply | Threaded
Open this post in threaded view
|

Re: Prototype scope doesn't work with osgi:service

Johan Edstrom-2
True :)

A Managed Service Factory would work though….
Not exactly the same thing since the starting bundle would hold more responsibility.



On Sep 5, 2011, at 12:08 PM, Guillaume Nodet wrote:

> The factory result is cached by the framework on a per bundle basis.
>
> On Monday, September 5, 2011, Johan Edstrom <[hidden email]> wrote:
>> Use a servicefactory.
>>
>> On Sep 5, 2011, at 6:24 AM, Sorin Silaghi wrote:
>>
>>> Hi all,
>>>
>>>
>>>           I need to declare a service that has scope="prototype" but it
>>> doesn't seem to work. Here's what I did:
>>>
>>> <bean id="randomFileListFTPClient"
>>> class="de.edigrid.util.servicemix.strategy.RandomFileListFTPClient"
>>> scope="prototype"/>
>>> <osgi:service id="randomFileListFTPClientService"
>>> ref="randomFileListFTPClient"
>>> interface="org.apache.commons.net.ftp.FTPClient" />
>>>
>>>
>>>           I also tried scope="bundle" and it's the same thing. I
> expected
>>> that to work. Any ideas ?
>>>
>>>
>>> thank you,
>>>               Sorin.
>>
>>
>
> --
> ------------------------
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com

Reply | Threaded
Open this post in threaded view
|

Re: Prototype scope doesn't work with osgi:service

sorin7486
Well for now I just exported the class and using spring to create the bean
in the SA where I need it. I'll try to figure something out later on.

On Mon, Sep 5, 2011 at 9:16 PM, Johan Edstrom <[hidden email]> wrote:

> True :)
>
> A Managed Service Factory would work though….
> Not exactly the same thing since the starting bundle would hold more
> responsibility.
>
>
>
> On Sep 5, 2011, at 12:08 PM, Guillaume Nodet wrote:
>
> > The factory result is cached by the framework on a per bundle basis.
> >
> > On Monday, September 5, 2011, Johan Edstrom <[hidden email]> wrote:
> >> Use a servicefactory.
> >>
> >> On Sep 5, 2011, at 6:24 AM, Sorin Silaghi wrote:
> >>
> >>> Hi all,
> >>>
> >>>
> >>>           I need to declare a service that has scope="prototype" but it
> >>> doesn't seem to work. Here's what I did:
> >>>
> >>> <bean id="randomFileListFTPClient"
> >>> class="de.edigrid.util.servicemix.strategy.RandomFileListFTPClient"
> >>> scope="prototype"/>
> >>> <osgi:service id="randomFileListFTPClientService"
> >>> ref="randomFileListFTPClient"
> >>> interface="org.apache.commons.net.ftp.FTPClient" />
> >>>
> >>>
> >>>           I also tried scope="bundle" and it's the same thing. I
> > expected
> >>> that to work. Any ideas ?
> >>>
> >>>
> >>> thank you,
> >>>               Sorin.
> >>
> >>
> >
> > --
> > ------------------------
> > Guillaume Nodet
> > ------------------------
> > Blog: http://gnodet.blogspot.com/
> > ------------------------
> > Open Source SOA
> > http://fusesource.com
>
>