You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Mike Hummel <mh...@mhus.de> on 2020/05/24 13:02:43 UTC

Karaf Cellar as Cache Provider

Hello,

I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.

I'm using karaf 4.2.6 and cellar 4.1.3.

I want to use hazelcast caching features but I get the following exception:

10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
karaf@b14e3b5c1560()>

If I install jcache

install -s mvn:javax.cache/cache-api/1.1.0

before installation of cellar I will get ...

10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
	... 4 more
Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 15 more
Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
karaf@200afd2d720a()>


The sample project and code is found here

https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java

The scenario description is here:

https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md

The core code snipped is:

        	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
        	HazelcastInstance inst = hccm.getInstance();
        	ICacheManager cm = inst.getCacheManager();
        	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
        	if (cc == null) {
        		cc = new CacheSimpleConfig();
        		cc.setName("test");
        		cc.setKeyType("String");
        		cc.setValueType("String");
        		inst.getConfig().addCacheConfig(cc);
        	}
        	ICache<String, String> testc = cm.getCache("test");
        	String a = testc.get("a");
        	System.out.println("A: " + a);
        	testc.put("a",new Date().toString());



I already tried cache-api

1.0.0-PFD - ClassNotFoundException
1.1.0 - ClassNotFoundException
1.1.1 - There is no valid JCache API library at classpath



Thx for help,
Regards,

Mike







Re: Karaf Cellar as Cache Provider

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi Mike,

Cool, thanks !

Regards
JB

> Le 11 juin 2020 à 18:31, Mike Hummel <mh...@mhus.de> a écrit :
> 
> Hi JB,
> 
> I created KARAF-6762 <https://issues.apache.org/jira/browse/KARAF-6762>
> 
> Thx, Mike
> 
>> On 10. Jun 2020, at 06:08, Jean-Baptiste Onofre <jb@nanthrax.net <ma...@nanthrax.net>> wrote:
>> 
>> Hi Mike,
>> 
>> Hmmm, ok for the dynamic import.
>> 
>> Can you please create a Jira about that ? As I’m completely refactoring Cellar, I will improve the caching here.
>> 
>> Thanks,
>> Regards
>> JB
>> 
>>> Le 9 juin 2020 à 22:27, Mike Hummel <mh@mhus.de <ma...@mhus.de>> a écrit :
>>> 
>>> Hello JB,
>>> 
>>> dynamic import is not working. I tested different scenarios but without success.
>>> 
>>> I'm waiting for a change in cellar. Helpful would be a  possibility to use the existing (connected) hazelcast instance with caching capabilities.
>>> 
>>> If I have time (currently not) I will fork cellar and try my best.
>>> 
>>> Thx,
>>> 
>>> Mike
>>> 
>>> 
>>>> On 4. Jun 2020, at 18:00, Mike Hummel <mh@mhus.de <ma...@mhus.de>> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> sorry for delay, I will retry it in the next days.
>>>> 
>>>> Regards,
>>>> Mike
>>>> 
>>>>> On 26. May 2020, at 06:36, Jean-Baptiste Onofre <jb@nanthrax.net <ma...@nanthrax.net>> wrote:
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> I was mentioning dynamic import, not refresh.
>>>>> 
>>>>> To enable dynamic import you can use the bundle:dynamic-import command.
>>>>> 
>>>>> It’s just a workaround, I will improve Cellar (I’m doing a complete refactoring of Cellar anyway).
>>>>> 
>>>>> Regards
>>>>> JB
>>>>> 
>>>>>> Le 25 mai 2020 à 19:39, Mike Hummel <mh@mhus.de <ma...@mhus.de>> a écrit :
>>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> yes I tried to refresh bundles in a row but even it was not successful or the wrong order...
>>>>>> 
>>>>>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>>>>> 
>>>>>> 
>>>>>> Could you give me a hint how to enable the feature afterward?
>>>>>> 
>>>>>> Thx,
>>>>>> 
>>>>>> Mike
>>>>>> 
>>>>>> 
>>>>>>> On 25. May 2020, at 06:05, Jean-Baptiste Onofre <jb@nanthrax.net <ma...@nanthrax.net>> wrote:
>>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> Did you try a refresh once installed cache bundle (without restarting Karaf) ?
>>>>>>> 
>>>>>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>>>>>> 
>>>>>>> Regards
>>>>>>> JB
>>>>>>> 
>>>>>>>> Le 24 mai 2020 à 20:56, Mike Hummel <mh@mhus.de <ma...@mhus.de>> a écrit :
>>>>>>>> 
>>>>>>>> After some try and error I found that the deployment order is important
>>>>>>>> 
>>>>>>>> 1)  Install cellar
>>>>>>>> feature:repo-add cellar
>>>>>>>> feature:install cellar
>>>>>>>> 
>>>>>>>> 2) THEN install JCache
>>>>>>>> cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0
>>>>>>>> 
>>>>>>>> ...) More bundles
>>>>>>>> cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT
>>>>>>>> 
>>>>>>>> 3) MUST restart karaf
>>>>>>>> shutdown -r -f
>>>>>>>> 
>>>>>>>> Now it's possible to use the cache api. (In other order it fails - reproducible)
>>>>>>>> 
>>>>>>>> But this not looks like a stable deployment.
>>>>>>>> 
>>>>>>>> Any ideas how to bring this in a stable working feature? Special the restart is strange.
>>>>>>>> 
>>>>>>>> Thx,
>>>>>>>> 
>>>>>>>> Mike
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On 24. May 2020, at 15:02, Mike Hummel <mh@mhus.de <ma...@mhus.de>> wrote:
>>>>>>>>> 
>>>>>>>>> Hello,
>>>>>>>>> 
>>>>>>>>> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
>>>>>>>>> 
>>>>>>>>> I'm using karaf 4.2.6 and cellar 4.1.3.
>>>>>>>>> 
>>>>>>>>> I want to use hazelcast caching features but I get the following exception:
>>>>>>>>> 
>>>>>>>>> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>>>>>> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
>>>>>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
>>>>>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
>>>>>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>>>>>> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>>>>>> karaf@b14e3b5c1560()>
>>>>>>>>> 
>>>>>>>>> If I install jcache
>>>>>>>>> 
>>>>>>>>> install -s mvn:javax.cache/cache-api/1.1.0
>>>>>>>>> 
>>>>>>>>> before installation of cellar I will get ...
>>>>>>>>> 
>>>>>>>>> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>>>>>> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>>>> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>>>>>>>> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
>>>>>>>>> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>>>>>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>>>>>> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
>>>>>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>>>>>> 	... 4 more
>>>>>>>>> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
>>>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>>>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>>>>>>> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>>>>>>>>> 	... 15 more
>>>>>>>>> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>>>> karaf@200afd2d720a()>
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> The sample project and code is found here
>>>>>>>>> 
>>>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java <https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java>
>>>>>>>>> 
>>>>>>>>> The scenario description is here:
>>>>>>>>> 
>>>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
>>>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
>>>>>>>>> 
>>>>>>>>> The core code snipped is:
>>>>>>>>> 
>>>>>>>>> 	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>>>>>>>>> 	HazelcastInstance inst = hccm.getInstance();
>>>>>>>>> 	ICacheManager cm = inst.getCacheManager();
>>>>>>>>> 	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>>>>>>>>> 	if (cc == null) {
>>>>>>>>> 		cc = new CacheSimpleConfig();
>>>>>>>>> 		cc.setName("test");
>>>>>>>>> 		cc.setKeyType("String");
>>>>>>>>> 		cc.setValueType("String");
>>>>>>>>> 		inst.getConfig().addCacheConfig(cc);
>>>>>>>>> 	}
>>>>>>>>> 	ICache<String, String> testc = cm.getCache("test");
>>>>>>>>> 	String a = testc.get("a");
>>>>>>>>> 	System.out.println("A: " + a);
>>>>>>>>> 	testc.put("a",new Date().toString());
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> I already tried cache-api
>>>>>>>>> 
>>>>>>>>> 1.0.0-PFD - ClassNotFoundException
>>>>>>>>> 1.1.0 - ClassNotFoundException
>>>>>>>>> 1.1.1 - There is no valid JCache API library at classpath
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Thx for help,
>>>>>>>>> Regards,
>>>>>>>>> 
>>>>>>>>> Mike
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: Karaf Cellar as Cache Provider

Posted by Mike Hummel <mh...@mhus.de>.
Hi JB,

I created KARAF-6762 <https://issues.apache.org/jira/browse/KARAF-6762>

Thx, Mike

> On 10. Jun 2020, at 06:08, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
> 
> Hi Mike,
> 
> Hmmm, ok for the dynamic import.
> 
> Can you please create a Jira about that ? As I’m completely refactoring Cellar, I will improve the caching here.
> 
> Thanks,
> Regards
> JB
> 
>> Le 9 juin 2020 à 22:27, Mike Hummel <mh...@mhus.de> a écrit :
>> 
>> Hello JB,
>> 
>> dynamic import is not working. I tested different scenarios but without success.
>> 
>> I'm waiting for a change in cellar. Helpful would be a  possibility to use the existing (connected) hazelcast instance with caching capabilities.
>> 
>> If I have time (currently not) I will fork cellar and try my best.
>> 
>> Thx,
>> 
>> Mike
>> 
>> 
>>> On 4. Jun 2020, at 18:00, Mike Hummel <mh...@mhus.de> wrote:
>>> 
>>> Hi,
>>> 
>>> sorry for delay, I will retry it in the next days.
>>> 
>>> Regards,
>>> Mike
>>> 
>>>> On 26. May 2020, at 06:36, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> I was mentioning dynamic import, not refresh.
>>>> 
>>>> To enable dynamic import you can use the bundle:dynamic-import command.
>>>> 
>>>> It’s just a workaround, I will improve Cellar (I’m doing a complete refactoring of Cellar anyway).
>>>> 
>>>> Regards
>>>> JB
>>>> 
>>>>> Le 25 mai 2020 à 19:39, Mike Hummel <mh...@mhus.de> a écrit :
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> yes I tried to refresh bundles in a row but even it was not successful or the wrong order...
>>>>> 
>>>>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>>>> 
>>>>> 
>>>>> Could you give me a hint how to enable the feature afterward?
>>>>> 
>>>>> Thx,
>>>>> 
>>>>> Mike
>>>>> 
>>>>> 
>>>>>> On 25. May 2020, at 06:05, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
>>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> Did you try a refresh once installed cache bundle (without restarting Karaf) ?
>>>>>> 
>>>>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>>>>> 
>>>>>> Regards
>>>>>> JB
>>>>>> 
>>>>>>> Le 24 mai 2020 à 20:56, Mike Hummel <mh...@mhus.de> a écrit :
>>>>>>> 
>>>>>>> After some try and error I found that the deployment order is important
>>>>>>> 
>>>>>>> 1)  Install cellar
>>>>>>> feature:repo-add cellar
>>>>>>> feature:install cellar
>>>>>>> 
>>>>>>> 2) THEN install JCache
>>>>>>> cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0
>>>>>>> 
>>>>>>> ...) More bundles
>>>>>>> cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT
>>>>>>> 
>>>>>>> 3) MUST restart karaf
>>>>>>> shutdown -r -f
>>>>>>> 
>>>>>>> Now it's possible to use the cache api. (In other order it fails - reproducible)
>>>>>>> 
>>>>>>> But this not looks like a stable deployment.
>>>>>>> 
>>>>>>> Any ideas how to bring this in a stable working feature? Special the restart is strange.
>>>>>>> 
>>>>>>> Thx,
>>>>>>> 
>>>>>>> Mike
>>>>>>> 
>>>>>>> 
>>>>>>>> On 24. May 2020, at 15:02, Mike Hummel <mh...@mhus.de> wrote:
>>>>>>>> 
>>>>>>>> Hello,
>>>>>>>> 
>>>>>>>> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
>>>>>>>> 
>>>>>>>> I'm using karaf 4.2.6 and cellar 4.1.3.
>>>>>>>> 
>>>>>>>> I want to use hazelcast caching features but I get the following exception:
>>>>>>>> 
>>>>>>>> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>>>>> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
>>>>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
>>>>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
>>>>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>>>>> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>>>>> karaf@b14e3b5c1560()>
>>>>>>>> 
>>>>>>>> If I install jcache
>>>>>>>> 
>>>>>>>> install -s mvn:javax.cache/cache-api/1.1.0
>>>>>>>> 
>>>>>>>> before installation of cellar I will get ...
>>>>>>>> 
>>>>>>>> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>>>>> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>>> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>>>>>>> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
>>>>>>>> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
>>>>>>>> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>>>>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>>>>> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
>>>>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>>>>> 	... 4 more
>>>>>>>> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
>>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>>>>>> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>>>>>>>> 	... 15 more
>>>>>>>> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>>> karaf@200afd2d720a()>
>>>>>>>> 
>>>>>>>> 
>>>>>>>> The sample project and code is found here
>>>>>>>> 
>>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java
>>>>>>>> 
>>>>>>>> The scenario description is here:
>>>>>>>> 
>>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
>>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
>>>>>>>> 
>>>>>>>> The core code snipped is:
>>>>>>>> 
>>>>>>>> 	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>>>>>>>> 	HazelcastInstance inst = hccm.getInstance();
>>>>>>>> 	ICacheManager cm = inst.getCacheManager();
>>>>>>>> 	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>>>>>>>> 	if (cc == null) {
>>>>>>>> 		cc = new CacheSimpleConfig();
>>>>>>>> 		cc.setName("test");
>>>>>>>> 		cc.setKeyType("String");
>>>>>>>> 		cc.setValueType("String");
>>>>>>>> 		inst.getConfig().addCacheConfig(cc);
>>>>>>>> 	}
>>>>>>>> 	ICache<String, String> testc = cm.getCache("test");
>>>>>>>> 	String a = testc.get("a");
>>>>>>>> 	System.out.println("A: " + a);
>>>>>>>> 	testc.put("a",new Date().toString());
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> I already tried cache-api
>>>>>>>> 
>>>>>>>> 1.0.0-PFD - ClassNotFoundException
>>>>>>>> 1.1.0 - ClassNotFoundException
>>>>>>>> 1.1.1 - There is no valid JCache API library at classpath
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Thx for help,
>>>>>>>> Regards,
>>>>>>>> 
>>>>>>>> Mike
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: Karaf Cellar as Cache Provider

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi Mike,

Hmmm, ok for the dynamic import.

Can you please create a Jira about that ? As I’m completely refactoring Cellar, I will improve the caching here.

Thanks,
Regards
JB

> Le 9 juin 2020 à 22:27, Mike Hummel <mh...@mhus.de> a écrit :
> 
> Hello JB,
> 
> dynamic import is not working. I tested different scenarios but without success.
> 
> I'm waiting for a change in cellar. Helpful would be a  possibility to use the existing (connected) hazelcast instance with caching capabilities.
> 
> If I have time (currently not) I will fork cellar and try my best.
> 
> Thx,
> 
> Mike
> 
> 
>> On 4. Jun 2020, at 18:00, Mike Hummel <mh...@mhus.de> wrote:
>> 
>> Hi,
>> 
>> sorry for delay, I will retry it in the next days.
>> 
>> Regards,
>> Mike
>> 
>>> On 26. May 2020, at 06:36, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
>>> 
>>> Hi,
>>> 
>>> I was mentioning dynamic import, not refresh.
>>> 
>>> To enable dynamic import you can use the bundle:dynamic-import command.
>>> 
>>> It’s just a workaround, I will improve Cellar (I’m doing a complete refactoring of Cellar anyway).
>>> 
>>> Regards
>>> JB
>>> 
>>>> Le 25 mai 2020 à 19:39, Mike Hummel <mh...@mhus.de> a écrit :
>>>> 
>>>> Hi,
>>>> 
>>>> yes I tried to refresh bundles in a row but even it was not successful or the wrong order...
>>>> 
>>>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>>> 
>>>> 
>>>> Could you give me a hint how to enable the feature afterward?
>>>> 
>>>> Thx,
>>>> 
>>>> Mike
>>>> 
>>>> 
>>>>> On 25. May 2020, at 06:05, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> Did you try a refresh once installed cache bundle (without restarting Karaf) ?
>>>>> 
>>>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>>>> 
>>>>> Regards
>>>>> JB
>>>>> 
>>>>>> Le 24 mai 2020 à 20:56, Mike Hummel <mh...@mhus.de> a écrit :
>>>>>> 
>>>>>> After some try and error I found that the deployment order is important
>>>>>> 
>>>>>> 1)  Install cellar
>>>>>> feature:repo-add cellar
>>>>>> feature:install cellar
>>>>>> 
>>>>>> 2) THEN install JCache
>>>>>> cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0
>>>>>> 
>>>>>> ...) More bundles
>>>>>> cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT
>>>>>> 
>>>>>> 3) MUST restart karaf
>>>>>> shutdown -r -f
>>>>>> 
>>>>>> Now it's possible to use the cache api. (In other order it fails - reproducible)
>>>>>> 
>>>>>> But this not looks like a stable deployment.
>>>>>> 
>>>>>> Any ideas how to bring this in a stable working feature? Special the restart is strange.
>>>>>> 
>>>>>> Thx,
>>>>>> 
>>>>>> Mike
>>>>>> 
>>>>>> 
>>>>>>> On 24. May 2020, at 15:02, Mike Hummel <mh...@mhus.de> wrote:
>>>>>>> 
>>>>>>> Hello,
>>>>>>> 
>>>>>>> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
>>>>>>> 
>>>>>>> I'm using karaf 4.2.6 and cellar 4.1.3.
>>>>>>> 
>>>>>>> I want to use hazelcast caching features but I get the following exception:
>>>>>>> 
>>>>>>> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>>>> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
>>>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
>>>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
>>>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>>>> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>>>> karaf@b14e3b5c1560()>
>>>>>>> 
>>>>>>> If I install jcache
>>>>>>> 
>>>>>>> install -s mvn:javax.cache/cache-api/1.1.0
>>>>>>> 
>>>>>>> before installation of cellar I will get ...
>>>>>>> 
>>>>>>> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>>>> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>>>>>> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
>>>>>>> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
>>>>>>> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>>>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>>>> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
>>>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>>>> 	... 4 more
>>>>>>> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>>>>> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>>>>> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>>>>>>> 	... 15 more
>>>>>>> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>>> karaf@200afd2d720a()>
>>>>>>> 
>>>>>>> 
>>>>>>> The sample project and code is found here
>>>>>>> 
>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java
>>>>>>> 
>>>>>>> The scenario description is here:
>>>>>>> 
>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
>>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
>>>>>>> 
>>>>>>> The core code snipped is:
>>>>>>> 
>>>>>>>  	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>>>>>>>  	HazelcastInstance inst = hccm.getInstance();
>>>>>>>  	ICacheManager cm = inst.getCacheManager();
>>>>>>>  	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>>>>>>>  	if (cc == null) {
>>>>>>>  		cc = new CacheSimpleConfig();
>>>>>>>  		cc.setName("test");
>>>>>>>  		cc.setKeyType("String");
>>>>>>>  		cc.setValueType("String");
>>>>>>>  		inst.getConfig().addCacheConfig(cc);
>>>>>>>  	}
>>>>>>>  	ICache<String, String> testc = cm.getCache("test");
>>>>>>>  	String a = testc.get("a");
>>>>>>>  	System.out.println("A: " + a);
>>>>>>>  	testc.put("a",new Date().toString());
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> I already tried cache-api
>>>>>>> 
>>>>>>> 1.0.0-PFD - ClassNotFoundException
>>>>>>> 1.1.0 - ClassNotFoundException
>>>>>>> 1.1.1 - There is no valid JCache API library at classpath
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Thx for help,
>>>>>>> Regards,
>>>>>>> 
>>>>>>> Mike
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: Karaf Cellar as Cache Provider

Posted by Mike Hummel <mh...@mhus.de>.
Hello JB,

dynamic import is not working. I tested different scenarios but without success.

I'm waiting for a change in cellar. Helpful would be a  possibility to use the existing (connected) hazelcast instance with caching capabilities.

If I have time (currently not) I will fork cellar and try my best.

Thx,

Mike


> On 4. Jun 2020, at 18:00, Mike Hummel <mh...@mhus.de> wrote:
> 
> Hi,
> 
> sorry for delay, I will retry it in the next days.
> 
> Regards,
> Mike
> 
>> On 26. May 2020, at 06:36, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
>> 
>> Hi,
>> 
>> I was mentioning dynamic import, not refresh.
>> 
>> To enable dynamic import you can use the bundle:dynamic-import command.
>> 
>> It’s just a workaround, I will improve Cellar (I’m doing a complete refactoring of Cellar anyway).
>> 
>> Regards
>> JB
>> 
>>> Le 25 mai 2020 à 19:39, Mike Hummel <mh...@mhus.de> a écrit :
>>> 
>>> Hi,
>>> 
>>> yes I tried to refresh bundles in a row but even it was not successful or the wrong order...
>>> 
>>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>> 
>>> 
>>> Could you give me a hint how to enable the feature afterward?
>>> 
>>> Thx,
>>> 
>>> Mike
>>> 
>>> 
>>>> On 25. May 2020, at 06:05, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> Did you try a refresh once installed cache bundle (without restarting Karaf) ?
>>>> 
>>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>>> 
>>>> Regards
>>>> JB
>>>> 
>>>>> Le 24 mai 2020 à 20:56, Mike Hummel <mh...@mhus.de> a écrit :
>>>>> 
>>>>> After some try and error I found that the deployment order is important
>>>>> 
>>>>> 1)  Install cellar
>>>>> feature:repo-add cellar
>>>>> feature:install cellar
>>>>> 
>>>>> 2) THEN install JCache
>>>>> cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0
>>>>> 
>>>>> ...) More bundles
>>>>> cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT
>>>>> 
>>>>> 3) MUST restart karaf
>>>>> shutdown -r -f
>>>>> 
>>>>> Now it's possible to use the cache api. (In other order it fails - reproducible)
>>>>> 
>>>>> But this not looks like a stable deployment.
>>>>> 
>>>>> Any ideas how to bring this in a stable working feature? Special the restart is strange.
>>>>> 
>>>>> Thx,
>>>>> 
>>>>> Mike
>>>>> 
>>>>> 
>>>>>> On 24. May 2020, at 15:02, Mike Hummel <mh...@mhus.de> wrote:
>>>>>> 
>>>>>> Hello,
>>>>>> 
>>>>>> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
>>>>>> 
>>>>>> I'm using karaf 4.2.6 and cellar 4.1.3.
>>>>>> 
>>>>>> I want to use hazelcast caching features but I get the following exception:
>>>>>> 
>>>>>> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>>> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
>>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
>>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
>>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>>> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>>> karaf@b14e3b5c1560()>
>>>>>> 
>>>>>> If I install jcache
>>>>>> 
>>>>>> install -s mvn:javax.cache/cache-api/1.1.0
>>>>>> 
>>>>>> before installation of cellar I will get ...
>>>>>> 
>>>>>> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>>> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>>>>> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
>>>>>> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
>>>>>> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>>> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
>>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>>> 	... 4 more
>>>>>> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
>>>>>> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>>>>>> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>>>> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>>>> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>>>>>> 	... 15 more
>>>>>> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>>> karaf@200afd2d720a()>
>>>>>> 
>>>>>> 
>>>>>> The sample project and code is found here
>>>>>> 
>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java
>>>>>> 
>>>>>> The scenario description is here:
>>>>>> 
>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
>>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
>>>>>> 
>>>>>> The core code snipped is:
>>>>>> 
>>>>>>   	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>>>>>>   	HazelcastInstance inst = hccm.getInstance();
>>>>>>   	ICacheManager cm = inst.getCacheManager();
>>>>>>   	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>>>>>>   	if (cc == null) {
>>>>>>   		cc = new CacheSimpleConfig();
>>>>>>   		cc.setName("test");
>>>>>>   		cc.setKeyType("String");
>>>>>>   		cc.setValueType("String");
>>>>>>   		inst.getConfig().addCacheConfig(cc);
>>>>>>   	}
>>>>>>   	ICache<String, String> testc = cm.getCache("test");
>>>>>>   	String a = testc.get("a");
>>>>>>   	System.out.println("A: " + a);
>>>>>>   	testc.put("a",new Date().toString());
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> I already tried cache-api
>>>>>> 
>>>>>> 1.0.0-PFD - ClassNotFoundException
>>>>>> 1.1.0 - ClassNotFoundException
>>>>>> 1.1.1 - There is no valid JCache API library at classpath
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Thx for help,
>>>>>> Regards,
>>>>>> 
>>>>>> Mike
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: Karaf Cellar as Cache Provider

Posted by Mike Hummel <mh...@mhus.de>.
Hi,

sorry for delay, I will retry it in the next days.

Regards,
Mike

> On 26. May 2020, at 06:36, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
> 
> Hi,
> 
> I was mentioning dynamic import, not refresh.
> 
> To enable dynamic import you can use the bundle:dynamic-import command.
> 
> It’s just a workaround, I will improve Cellar (I’m doing a complete refactoring of Cellar anyway).
> 
> Regards
> JB
> 
>> Le 25 mai 2020 à 19:39, Mike Hummel <mh...@mhus.de> a écrit :
>> 
>> Hi,
>> 
>> yes I tried to refresh bundles in a row but even it was not successful or the wrong order...
>> 
>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>> 
>> 
>> Could you give me a hint how to enable the feature afterward?
>> 
>> Thx,
>> 
>> Mike
>> 
>> 
>>> On 25. May 2020, at 06:05, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
>>> 
>>> Hi,
>>> 
>>> Did you try a refresh once installed cache bundle (without restarting Karaf) ?
>>> 
>>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>>> 
>>> Regards
>>> JB
>>> 
>>>> Le 24 mai 2020 à 20:56, Mike Hummel <mh...@mhus.de> a écrit :
>>>> 
>>>> After some try and error I found that the deployment order is important
>>>> 
>>>> 1)  Install cellar
>>>> feature:repo-add cellar
>>>> feature:install cellar
>>>> 
>>>> 2) THEN install JCache
>>>> cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0
>>>> 
>>>> ...) More bundles
>>>> cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT
>>>> 
>>>> 3) MUST restart karaf
>>>> shutdown -r -f
>>>> 
>>>> Now it's possible to use the cache api. (In other order it fails - reproducible)
>>>> 
>>>> But this not looks like a stable deployment.
>>>> 
>>>> Any ideas how to bring this in a stable working feature? Special the restart is strange.
>>>> 
>>>> Thx,
>>>> 
>>>> Mike
>>>> 
>>>> 
>>>>> On 24. May 2020, at 15:02, Mike Hummel <mh...@mhus.de> wrote:
>>>>> 
>>>>> Hello,
>>>>> 
>>>>> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
>>>>> 
>>>>> I'm using karaf 4.2.6 and cellar 4.1.3.
>>>>> 
>>>>> I want to use hazelcast caching features but I get the following exception:
>>>>> 
>>>>> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
>>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>>> karaf@b14e3b5c1560()>
>>>>> 
>>>>> If I install jcache
>>>>> 
>>>>> install -s mvn:javax.cache/cache-api/1.1.0
>>>>> 
>>>>> before installation of cellar I will get ...
>>>>> 
>>>>> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>>> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>>>> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
>>>>> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
>>>>> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>>> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
>>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>>> 	... 4 more
>>>>> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
>>>>> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>>>>> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>>> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>>> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>>>>> 	... 15 more
>>>>> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>>> karaf@200afd2d720a()>
>>>>> 
>>>>> 
>>>>> The sample project and code is found here
>>>>> 
>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java
>>>>> 
>>>>> The scenario description is here:
>>>>> 
>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
>>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
>>>>> 
>>>>> The core code snipped is:
>>>>> 
>>>>>    	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>>>>>    	HazelcastInstance inst = hccm.getInstance();
>>>>>    	ICacheManager cm = inst.getCacheManager();
>>>>>    	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>>>>>    	if (cc == null) {
>>>>>    		cc = new CacheSimpleConfig();
>>>>>    		cc.setName("test");
>>>>>    		cc.setKeyType("String");
>>>>>    		cc.setValueType("String");
>>>>>    		inst.getConfig().addCacheConfig(cc);
>>>>>    	}
>>>>>    	ICache<String, String> testc = cm.getCache("test");
>>>>>    	String a = testc.get("a");
>>>>>    	System.out.println("A: " + a);
>>>>>    	testc.put("a",new Date().toString());
>>>>> 
>>>>> 
>>>>> 
>>>>> I already tried cache-api
>>>>> 
>>>>> 1.0.0-PFD - ClassNotFoundException
>>>>> 1.1.0 - ClassNotFoundException
>>>>> 1.1.1 - There is no valid JCache API library at classpath
>>>>> 
>>>>> 
>>>>> 
>>>>> Thx for help,
>>>>> Regards,
>>>>> 
>>>>> Mike
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: Karaf Cellar as Cache Provider

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi,

I was mentioning dynamic import, not refresh.

To enable dynamic import you can use the bundle:dynamic-import command.

It’s just a workaround, I will improve Cellar (I’m doing a complete refactoring of Cellar anyway).

Regards
JB

> Le 25 mai 2020 à 19:39, Mike Hummel <mh...@mhus.de> a écrit :
> 
> Hi,
> 
> yes I tried to refresh bundles in a row but even it was not successful or the wrong order...
> 
>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
> 
> 
> Could you give me a hint how to enable the feature afterward?
> 
> Thx,
> 
> Mike
> 
> 
>> On 25. May 2020, at 06:05, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
>> 
>> Hi,
>> 
>> Did you try a refresh once installed cache bundle (without restarting Karaf) ?
>> 
>> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
>> 
>> Regards
>> JB
>> 
>>> Le 24 mai 2020 à 20:56, Mike Hummel <mh...@mhus.de> a écrit :
>>> 
>>> After some try and error I found that the deployment order is important
>>> 
>>> 1)  Install cellar
>>> feature:repo-add cellar
>>> feature:install cellar
>>> 
>>> 2) THEN install JCache
>>> cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0
>>> 
>>> ...) More bundles
>>> cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT
>>> 
>>> 3) MUST restart karaf
>>> shutdown -r -f
>>> 
>>> Now it's possible to use the cache api. (In other order it fails - reproducible)
>>> 
>>> But this not looks like a stable deployment.
>>> 
>>> Any ideas how to bring this in a stable working feature? Special the restart is strange.
>>> 
>>> Thx,
>>> 
>>> Mike
>>> 
>>> 
>>>> On 24. May 2020, at 15:02, Mike Hummel <mh...@mhus.de> wrote:
>>>> 
>>>> Hello,
>>>> 
>>>> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
>>>> 
>>>> I'm using karaf 4.2.6 and cellar 4.1.3.
>>>> 
>>>> I want to use hazelcast caching features but I get the following exception:
>>>> 
>>>> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
>>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>>> karaf@b14e3b5c1560()>
>>>> 
>>>> If I install jcache
>>>> 
>>>> install -s mvn:javax.cache/cache-api/1.1.0
>>>> 
>>>> before installation of cellar I will get ...
>>>> 
>>>> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
>>>> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>>> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
>>>> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
>>>> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>>> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
>>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>>> 	... 4 more
>>>> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
>>>> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>>>> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>>>> 	... 15 more
>>>> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>>> karaf@200afd2d720a()>
>>>> 
>>>> 
>>>> The sample project and code is found here
>>>> 
>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java
>>>> 
>>>> The scenario description is here:
>>>> 
>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
>>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
>>>> 
>>>> The core code snipped is:
>>>> 
>>>>     	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>>>>     	HazelcastInstance inst = hccm.getInstance();
>>>>     	ICacheManager cm = inst.getCacheManager();
>>>>     	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>>>>     	if (cc == null) {
>>>>     		cc = new CacheSimpleConfig();
>>>>     		cc.setName("test");
>>>>     		cc.setKeyType("String");
>>>>     		cc.setValueType("String");
>>>>     		inst.getConfig().addCacheConfig(cc);
>>>>     	}
>>>>     	ICache<String, String> testc = cm.getCache("test");
>>>>     	String a = testc.get("a");
>>>>     	System.out.println("A: " + a);
>>>>     	testc.put("a",new Date().toString());
>>>> 
>>>> 
>>>> 
>>>> I already tried cache-api
>>>> 
>>>> 1.0.0-PFD - ClassNotFoundException
>>>> 1.1.0 - ClassNotFoundException
>>>> 1.1.1 - There is no valid JCache API library at classpath
>>>> 
>>>> 
>>>> 
>>>> Thx for help,
>>>> Regards,
>>>> 
>>>> Mike
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>> 
> 


Re: Karaf Cellar as Cache Provider

Posted by Mike Hummel <mh...@mhus.de>.
Hi,

yes I tried to refresh bundles in a row but even it was not successful or the wrong order...

> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.


Could you give me a hint how to enable the feature afterward?

Thx,

Mike


> On 25. May 2020, at 06:05, Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
> 
> Hi,
> 
> Did you try a refresh once installed cache bundle (without restarting Karaf) ?
> 
> You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.
> 
> Regards
> JB
> 
>> Le 24 mai 2020 à 20:56, Mike Hummel <mh...@mhus.de> a écrit :
>> 
>> After some try and error I found that the deployment order is important
>> 
>> 1)  Install cellar
>> feature:repo-add cellar
>> feature:install cellar
>> 
>> 2) THEN install JCache
>> cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0
>> 
>> ...) More bundles
>> cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT
>> 
>> 3) MUST restart karaf
>> shutdown -r -f
>> 
>> Now it's possible to use the cache api. (In other order it fails - reproducible)
>> 
>> But this not looks like a stable deployment.
>> 
>> Any ideas how to bring this in a stable working feature? Special the restart is strange.
>> 
>> Thx,
>> 
>> Mike
>> 
>> 
>>> On 24. May 2020, at 15:02, Mike Hummel <mh...@mhus.de> wrote:
>>> 
>>> Hello,
>>> 
>>> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
>>> 
>>> I'm using karaf 4.2.6 and cellar 4.1.3.
>>> 
>>> I want to use hazelcast caching features but I get the following exception:
>>> 
>>> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
>>> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
>>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>>> karaf@b14e3b5c1560()>
>>> 
>>> If I install jcache
>>> 
>>> install -s mvn:javax.cache/cache-api/1.1.0
>>> 
>>> before installation of cellar I will get ...
>>> 
>>> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
>>> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
>>> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
>>> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
>>> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>>> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
>>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>>> 	... 4 more
>>> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
>>> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>>> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>>> 	... 15 more
>>> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>>> karaf@200afd2d720a()>
>>> 
>>> 
>>> The sample project and code is found here
>>> 
>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java
>>> 
>>> The scenario description is here:
>>> 
>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
>>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
>>> 
>>> The core code snipped is:
>>> 
>>>      	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>>>      	HazelcastInstance inst = hccm.getInstance();
>>>      	ICacheManager cm = inst.getCacheManager();
>>>      	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>>>      	if (cc == null) {
>>>      		cc = new CacheSimpleConfig();
>>>      		cc.setName("test");
>>>      		cc.setKeyType("String");
>>>      		cc.setValueType("String");
>>>      		inst.getConfig().addCacheConfig(cc);
>>>      	}
>>>      	ICache<String, String> testc = cm.getCache("test");
>>>      	String a = testc.get("a");
>>>      	System.out.println("A: " + a);
>>>      	testc.put("a",new Date().toString());
>>> 
>>> 
>>> 
>>> I already tried cache-api
>>> 
>>> 1.0.0-PFD - ClassNotFoundException
>>> 1.1.0 - ClassNotFoundException
>>> 1.1.1 - There is no valid JCache API library at classpath
>>> 
>>> 
>>> 
>>> Thx for help,
>>> Regards,
>>> 
>>> Mike
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
> 


Re: Karaf Cellar as Cache Provider

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi,

Did you try a refresh once installed cache bundle (without restarting Karaf) ?

You can enable dynamic import on cellar-hazelcast (providing the hazelcast service), I think it should help.

Regards
JB

> Le 24 mai 2020 à 20:56, Mike Hummel <mh...@mhus.de> a écrit :
> 
> After some try and error I found that the deployment order is important
> 
> 1)  Install cellar
> feature:repo-add cellar
> feature:install cellar
> 
> 2) THEN install JCache
> cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0
> 
> ...) More bundles
> cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT
> 
> 3) MUST restart karaf
> shutdown -r -f
> 
> Now it's possible to use the cache api. (In other order it fails - reproducible)
> 
> But this not looks like a stable deployment.
> 
> Any ideas how to bring this in a stable working feature? Special the restart is strange.
> 
> Thx,
> 
> Mike
> 
> 
>> On 24. May 2020, at 15:02, Mike Hummel <mh...@mhus.de> wrote:
>> 
>> Hello,
>> 
>> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
>> 
>> I'm using karaf 4.2.6 and cellar 4.1.3.
>> 
>> I want to use hazelcast caching features but I get the following exception:
>> 
>> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
>> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
>> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
>> karaf@b14e3b5c1560()>
>> 
>> If I install jcache
>> 
>> install -s mvn:javax.cache/cache-api/1.1.0
>> 
>> before installation of cellar I will get ...
>> 
>> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
>> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
>> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
>> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
>> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>> 	at java.base/java.lang.Thread.run(Thread.java:834)
>> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
>> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
>> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
>> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
>> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
>> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
>> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>> 	... 4 more
>> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
>> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>> 	... 15 more
>> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
>> karaf@200afd2d720a()>
>> 
>> 
>> The sample project and code is found here
>> 
>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java
>> 
>> The scenario description is here:
>> 
>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
>> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
>> 
>> The core code snipped is:
>> 
>>       	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>>       	HazelcastInstance inst = hccm.getInstance();
>>       	ICacheManager cm = inst.getCacheManager();
>>       	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>>       	if (cc == null) {
>>       		cc = new CacheSimpleConfig();
>>       		cc.setName("test");
>>       		cc.setKeyType("String");
>>       		cc.setValueType("String");
>>       		inst.getConfig().addCacheConfig(cc);
>>       	}
>>       	ICache<String, String> testc = cm.getCache("test");
>>       	String a = testc.get("a");
>>       	System.out.println("A: " + a);
>>       	testc.put("a",new Date().toString());
>> 
>> 
>> 
>> I already tried cache-api
>> 
>> 1.0.0-PFD - ClassNotFoundException
>> 1.1.0 - ClassNotFoundException
>> 1.1.1 - There is no valid JCache API library at classpath
>> 
>> 
>> 
>> Thx for help,
>> Regards,
>> 
>> Mike
>> 
>> 
>> 
>> 
>> 
>> 
> 


Re: Karaf Cellar as Cache Provider

Posted by Mike Hummel <mh...@mhus.de>.
After some try and error I found that the deployment order is important

1)  Install cellar
feature:repo-add cellar
feature:install cellar

2) THEN install JCache
cluster:bundle-install -s default mvn:javax.cache/cache-api/1.1.0

...) More bundles
cluster:bundle-install -s default mvn:de.mhus.osgi/dev-cache/7.1.0-SNAPSHOT

3) MUST restart karaf
shutdown -r -f

Now it's possible to use the cache api. (In other order it fails - reproducible)

But this not looks like a stable deployment.

Any ideas how to bring this in a stable working feature? Special the restart is strange.

Thx,

Mike


> On 24. May 2020, at 15:02, Mike Hummel <mh...@mhus.de> wrote:
> 
> Hello,
> 
> I got karaf cellar to work as expected - don't know what was the problem last time. It's really cool.
> 
> I'm using karaf 4.2.6 and cellar 4.1.3.
> 
> I want to use hazelcast caching features but I get the following exception:
> 
> 10:55:14.263 ERROR [Karaf local console user karaf] Exception caught while executing command
> java.lang.IllegalStateException: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCacheByFullName(HazelcastInstanceCacheManager.java:54)
> 	at com.hazelcast.instance.HazelcastInstanceCacheManager.getCache(HazelcastInstanceCacheManager.java:45)
> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:86)
> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> 	at java.base/java.lang.Thread.run(Thread.java:834)
> Error executing command: There is no valid JCache API library at classpath. Please be sure that there is a JCache API library in your classpath and it is newer than `0.x` and `1.0.0-PFD` versions!
> karaf@b14e3b5c1560()>
> 
> If I install jcache
> 
> install -s mvn:javax.cache/cache-api/1.1.0
> 
> before installation of cellar I will get ...
> 
> 10:56:57.732 ERROR [Karaf local console user karaf] Exception caught while executing command
> java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
> 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
> 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
> 	at org.apache.felix.gogo.runtime.CommandSessionImpl$JobImpl.run(CommandSessionImpl.java:855)
> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> 	at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
> 	at de.mhus.osgi.dev.cache.CmdDevHazelcast.execute2(CmdDevHazelcast.java:61)
> 	at de.mhus.osgi.api.karaf.AbstractCmd.execute(AbstractCmd.java:96)
> 	at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
> 	at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
> 	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
> 	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
> 	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
> 	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
> 	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
> 	... 4 more
> Caused by: java.lang.ClassNotFoundException: org.apache.karaf.cellar.hazelcast.HazelcastClusterManager not found by dev-cache [159]
> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
> 	at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
> 	... 15 more
> Error executing command: java.lang.NoClassDefFoundError: org/apache/karaf/cellar/hazelcast/HazelcastClusterManager
> karaf@200afd2d720a()>
> 
> 
> The sample project and code is found here
> 
> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/src/main/java/de/mhus/osgi/dev/cache/CmdDevHazelcast.java
> 
> The scenario description is here:
> 
> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-deploy/cellar-docker.adoc
> https://github.com/mhus/mhus-osgi-dev/blob/master/dev-cache/hazelcast.md
> 
> The core code snipped is:
> 
>        	HazelcastClusterManager hccm = (HazelcastClusterManager)clusterManager;
>        	HazelcastInstance inst = hccm.getInstance();
>        	ICacheManager cm = inst.getCacheManager();
>        	CacheSimpleConfig cc = inst.getConfig().getCacheConfig("test");
>        	if (cc == null) {
>        		cc = new CacheSimpleConfig();
>        		cc.setName("test");
>        		cc.setKeyType("String");
>        		cc.setValueType("String");
>        		inst.getConfig().addCacheConfig(cc);
>        	}
>        	ICache<String, String> testc = cm.getCache("test");
>        	String a = testc.get("a");
>        	System.out.println("A: " + a);
>        	testc.put("a",new Date().toString());
> 
> 
> 
> I already tried cache-api
> 
> 1.0.0-PFD - ClassNotFoundException
> 1.1.0 - ClassNotFoundException
> 1.1.1 - There is no valid JCache API library at classpath
> 
> 
> 
> Thx for help,
> Regards,
> 
> Mike
> 
> 
> 
> 
> 
>