Hi,

I am interested to try Level 2 caching to see what performance benefits I
can gain.

At the moment I cannot configure it.

In the file persistor_datanucleus.properties I have these settings:

#
# L2 cache
# off except if explicitly marked as cacheable
# http://www.datanucleus.org/products/datanucleus/jdo/cache.html
#
isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=javax.cache
isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode=UNSPECIFIED
isis.persistor.datanucleus.cache.level2.cacheName=myCache

I then get the following errors on start-up. This missing class
"org.datanucleus.cache.JavaxCacheLevel2Cache" does seem to be on the
classpath, within datanucleus-core.4.1.7.jar

1) Error in custom provider, javax.jdo.JDOFatalUserException: Level 2 Cache
"javax.cache" is registered to use class
"org.datanucleus.cache.JavaxCacheLevel2Cache" yet this is not found. Please
check your CLASSPATH and plugin specification.
NestedThrowables:
java.lang.reflect.InvocationTargetException
  at
org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSessionFactory(IsisInjectModule.java:109)
  at
org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSessionFactory(IsisInjectModule.java:109)
  while locating
org.apache.isis.core.runtime.system.session.IsisSessionFactory
    for field at
org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.isisSessionFactory(IsisWicketApplication.java:138)
  while locating domainapp.webapp.DomainApplication

1 error
    at
com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:482)
    at
com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:67)
    at
com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:984)
    at
org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.init(IsisWicketApplication.java:279)
    at domainapp.webapp.DomainApplication.init(DomainApplication.java:64)
    at org.apache.wicket.Application.initApplication(Application.java:823)
    at
org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:427)
    ... 19 more
Caused by: javax.jdo.JDOFatalUserException: Level 2 Cache "javax.cache" is
registered to use class "org.datanucleus.cache.JavaxCacheLevel2Cache" yet
this is not found. Please check your CLASSPATH and plugin specification.
NestedThrowables:
java.lang.reflect.InvocationTargetException
    at
org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:606)
    at
org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:859)
    at
org.datanucleus.api.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:337)
    at
org.datanucleus.api.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:216)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at javax.jdo.JDOHelper$16.run(JDOHelper.java:1970)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.jdo.JDOHelper.invoke(JDOHelper.java:1965)
    at
javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1171)
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:813)
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:702)
    at
org.apache.isis.core.runtime.system.persistence.DataNucleusApplicationComponents.isSchemaAwareStoreManager(DataNucleusApplicationComponents.java:117)
    at
org.apache.isis.core.runtime.system.persistence.DataNucleusApplicationComponents.createPmfAndSchemaIfRequired(DataNucleusApplicationComponents.java:132)
    at
org.apache.isis.core.runtime.system.persistence.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:108)
    at
org.apache.isis.core.runtime.system.persistence.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:101)
    at
org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createDataNucleusApplicationComponents(PersistenceSessionFactory.java:99)
    at
org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.init(PersistenceSessionFactory.java:76)
    at
org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder.buildSessionFactory(IsisSessionFactoryBuilder.java:202)
    at
org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSessionFactory(IsisInjectModule.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at
com.google.inject.internal.ProviderMethod$ReflectionProviderMethod.doProvision(ProviderMethod.java:299)
    at
com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:172)
    at
com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
    at
com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
    at
com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
    at
com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
    at
com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    at
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at
com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
    at
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
    at
com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54)
    at
com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
    at
com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93)
    at
com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80)
    at
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
    at
com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80)
    at
com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:62)
    ... 24 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at
org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:606)
    at
org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:301)
    at
org.datanucleus.PersistenceNucleusContextImpl.getLevel2Cache(PersistenceNucleusContextImpl.java:1373)
    at
org.datanucleus.PersistenceNucleusContextImpl.initialise(PersistenceNucleusContextImpl.java:449)
    at
org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:846)
    ... 66 more
Caused by: org.datanucleus.exceptions.NucleusException: Error creating cache
    at
org.datanucleus.cache.JavaxCacheLevel2Cache.<init>(JavaxCacheLevel2Cache.java:98)
    ... 75 more
Caused by: javax.cache.CacheException: No CachingProviders have been
configured
    at
javax.cache.Caching$CachingProviderRegistry.getCachingProvider(Caching.java:381)
    at
javax.cache.Caching$CachingProviderRegistry.getCachingProvider(Caching.java:351)
    at javax.cache.Caching.getCachingProvider(Caching.java:142)
    at
org.datanucleus.cache.JavaxCacheLevel2Cache.<init>(JavaxCacheLevel2Cache.java:64)

Reply via email to