Mohamed, if I understand correctly, what you really need in order to cache
method calls are proxies around arbitrary services.

First I don't think there's a OOTB solution for your problem description
specifically to do method caching.

Also, OSGi doesn't natively provide a proxy mechanism. In fact, it
generally goes out of it's way to avoid needing that kind of indirection.
However it does provide a few technologies that give you capabilities to
build this. There are also some open source projects that can help with
this.

In order of depth of integration:

*1. framework weaving hooks* [1]
PROS
     - TRANSPARENT to service providers & consumers
     - you can control any bytecode used anywhere in the framework from here
CONS
    - it can be an intense journey into bytecode manipulation.. if you have
the heart for it you can do crazy stuff here, but it won't be trivial
    - start ordering will be your biggest foe

*2. framework service hooks* [2]
PROS
     - TRANSPARENT service to providers & consumers
     - you can intercept and modify the visibility or accessibility of
services before they are gotten by consumers which means you could proxy
here
CONS
     - still pretty low level and high degree of awareness of the OSGi
service registry behaviour is required
     - start ordering is also a complexity you need to think about

3. *use an injection framework* that supports proxies
PROS
     - use existing technology do to the heavy lifting (spring, CDI...
upcoming spec [3] ... try the RI [4] ..., etc.)
CONS
   - service to providers need to use the selected framework
   - no unobtrusive, transversal configuration

4. *AspecIO* [5]
PROS
    - TRANSPARENT to providers & consumers
    - unobtrusive and transversal configuration
    - no start ordering issues? (I think Simon built a solution for this
???)
CONS
    - start ordering issues? (I think Simon built a solution for this ???)

FYI, this is not a pitch for the project because I'm not involved in it at
all. I only know that it covers almost all your requirements (which I've
extrapolated from between the lines).

Hope that helps in some way.

- Ray

[1]
https://osgi.org/specification/osgi.core/7.0.0/framework.weavinghooks.html
[2]
https://osgi.org/specification/osgi.core/7.0.0/framework.servicehooks.html
[3] https://osgi.org/specification/osgi.enterprise/7.0.0/service.cdi.html
[4]
https://repository.apache.org/content/repositories/snapshots/org/apache/aries/cdi/org.apache.aries.cdi.extender/0.0.2-SNAPSHOT/
[5] https://github.com/primeval-io/aspecio


On Thu, Nov 22, 2018 at 10:34 AM Mohamed AFIF via osgi-dev <
osgi-dev@mail.osgi.org> wrote:

> Hi Alain,
>
> Thanks a lot for sharing  your experience, but as I've seen on
> documentation , I'm not sure that infinispan handles cache of methods .
>
> Regards.
>
> Mohamed.
>
>
> Le jeu. 22 nov. 2018 à 11:10, Alain Picard <pic...@castortech.com> a
> écrit :
>
>> If it might help, we are in the process of using Infinispan at our end.
>> It is OSGi compliant (almost) and for Karaf users (not us yet), it comes
>> with features for easy deployment.
>>
>> Alain
>>
>>
>> On Thu, Nov 22, 2018 at 5:02 AM Mohamed AFIF via osgi-dev <
>> osgi-dev@mail.osgi.org> wrote:
>>
>>> Hello everybody,
>>>
>>> We need to implement a cache system in our Karaf (Felix) , our need is
>>> especially to cache method results, but It’s hard to find a cache solution
>>> which is OSGI compliant, Spring can do that but  it’s cache feature can be
>>> used only over a spring managed beans, so we ‘re using Blueprint  than the
>>> Spring solution could not be used, also spring has some problems to run
>>> inside a Kataf, so we’re thanking to use the AOP, with AspectJ, but we
>>> should manage by ourself the data synchronization …., Thus I would like to
>>> know if some users among this mailing list have already  been  facing this
>>> problem and which solution could be better to implement inside a
>>> Karaf/Felix,
>>>
>>>
>>>
>>> Thank you very much for your help
>>>
>>>
>>>
>>> M.AFIF
>>>
>>> --
>>>
>>> Cdt
>>> Mohamed AFIF
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> osgi-dev@mail.osgi.org
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev



-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
 (@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAlliance)
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to