However, the following exception is common to the range of cache implementations I've tried.
I'm using datanucleus-core.4.1.7.jar I'll see if Andy will talk to me .. - java.lang.ClassCastException - org.datanucleus.identity.SCOID cannot be cast to java.io.Serializable - org.datanucleus.cache.ehcache.EhcacheLevel2Cache#get(EhcacheLevel2Cache.java:143) - org.datanucleus.ExecutionContextImpl#getObjectFromLevel2Cache(ExecutionContextImpl.java:5205) - org.datanucleus.ExecutionContextImpl#getObjectFromCache(ExecutionContextImpl.java:5101) - org.datanucleus.ExecutionContextImpl#findObject(ExecutionContextImpl.java:3048) - org.datanucleus.store.rdbms.query.PersistentClassROF#getObjectForDatastoreId(PersistentClassROF.java:460) - org.datanucleus.store.rdbms.query.PersistentClassROF#getObject(PersistentClassROF.java:405) - org.datanucleus.store.rdbms.query.ForwardQueryResult#nextResultSetElement(ForwardQueryResult.java:181) - org.datanucleus.store.rdbms.query.ForwardQueryResult$QueryResultIterator#next(ForwardQueryResult.java:400) - org.datanucleus.store.rdbms.query.ForwardQueryResult#processNumberOfResults(ForwardQueryResult.java:143) - org.datanucleus.store.rdbms.query.ForwardQueryResult#advanceToEndOfResultSet(ForwardQueryResult.java:164) - org.datanucleus.store.rdbms.query.ForwardQueryResult#toArray(ForwardQueryResult.java:524) - java.util.ArrayList#<init>(ArrayList.java:177) - com.google.common.collect.Lists#newArrayList(Lists.java:146) - org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindUsingApplibQueryProcessor#getResults(PersistenceQueryFindUsingApplibQueryProcessor.java:124) - org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindUsingApplibQueryProcessor#process(PersistenceQueryFindUsingApplibQueryProcessor.java:57) - org.apache.isis.objectstore.jdo.datanucleus.persistence.queries.PersistenceQueryFindUsingApplibQueryProcessor#process(PersistenceQueryFindUsingApplibQueryProcessor.java:41) - org.apache.isis.core.runtime.system.persistence.PersistenceSession#processPersistenceQuery(PersistenceSession.java:612) - org.apache.isis.core.runtime.system.persistence.PersistenceSession#access$000(PersistenceSession.java:150) - org.apache.isis.core.runtime.system.persistence.PersistenceSession$1#execute(PersistenceSession.java:573) - org.apache.isis.core.runtime.system.persistence.PersistenceSession$1#execute(PersistenceSession.java:570) - org.apache.isis.core.runtime.system.transaction.IsisTransactionManager#executeWithinTransaction(IsisTransactionManager.java:190) - org.apache.isis.core.runtime.system.transaction.IsisTransactionManager#executeWithinTransaction(IsisTransactionManager.java:180) - org.apache.isis.core.runtime.system.persistence.PersistenceSession#findInstancesInTransaction(PersistenceSession.java:569) - org.apache.isis.core.runtime.system.persistence.PersistenceSession#allMatchingQuery(PersistenceSession.java:536) - org.apache.isis.core.runtime.services.persistsession.PersistenceSessionServiceInternalDefault#allMatchingQuery(PersistenceSessionServiceInternalDefault.java:169) - org.apache.isis.core.metamodel.services.repository.RepositoryServiceInternalDefault#submitQuery(RepositoryServiceInternalDefault.java:172) - org.apache.isis.core.metamodel.services.repository.RepositoryServiceInternalDefault#allMatches(RepositoryServiceInternalDefault.java:168) - org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault#allMatches(DomainObjectContainerDefault.java:493) - au.com.scds.chats.dom.participant.Participants#listActiveParticipantIdentities(Participants.java:132) - au.com.scds.chats.dom.activity.Activity#choices0AddParticipant(Activity.java:637) - sun.reflect.NativeMethodAccessorImpl#invoke0(NativeMethodAccessorImpl.java:-2) - sun.reflect.NativeMethodAccessorImpl#invoke(NativeMethodAccessorImpl.java:62) - sun.reflect.DelegatingMethodAccessorImpl#invoke(DelegatingMethodAccessorImpl.java:43) - java.lang.reflect.Method#invoke(Method.java:497) - org.apache.isis.core.commons.lang.MethodExtensions#invoke(MethodExtensions.java:53) - org.apache.isis.core.metamodel.adapter.ObjectAdapter$InvokeUtils#invoke(ObjectAdapter.java:385) - org.apache.isis.core.metamodel.adapter.ObjectAdapter$InvokeUtils#invokeAutofit(ObjectAdapter.java:422) - org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod#getChoices(ActionParameterChoicesFacetViaMethod.java:79) - org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionParameterAbstract#findChoices(ObjectActionParameterAbstract.java:341) - org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionParameterAbstract#getChoices(ObjectActionParameterAbstract.java:330) - org.apache.isis.viewer.wicket.model.models.ScalarModel$Kind$2#getChoices(ScalarModel.java:381) - org.apache.isis.viewer.wicket.model.models.ScalarModel#getChoices(ScalarModel.java:728) - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#obtainChoiceMementos(ReferencePanel.java:366) - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#setProviderAndCurrAndPending(ReferencePanel.java:345) - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#syncWithInput(ReferencePanel.java:267) - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#addComponentForRegular(ReferencePanel.java:123) - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#addComponentForRegular(ReferencePanel.java:69) - org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract#buildGui(ScalarPanelAbstract.java:225) - org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract#onBeforeRender(ScalarPanelAbstract.java:183) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.markup.repeater.AbstractRepeater#onBeforeRender(AbstractRepeater.java:143) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.markup.html.form.Form#onBeforeRender(Form.java:1803) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684) - org.apache.wicket.Component#onBeforeRender(Component.java:3833) - org.apache.wicket.Component#internalBeforeRender(Component.java:949) - org.apache.wicket.Component#beforeRender(Component.java:1017) - org.apache.wicket.Component#internalPrepareForRender(Component.java:2201) - org.apache.wicket.Component#prepareForRender(Component.java:2240) - org.apache.wicket.ajax.XmlAjaxResponse#writeComponent(XmlAjaxResponse.java:107) - org.apache.wicket.ajax.AbstractAjaxResponse#writeComponents(AbstractAjaxResponse.java:218) - org.apache.wicket.ajax.AbstractAjaxResponse#writeTo(AbstractAjaxResponse.java:150) - org.apache.wicket.ajax.AjaxRequestHandler#respond(AjaxRequestHandler.java:359) - org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:890) - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64) - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:97) - org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:261) - org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:218) - org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:289) - org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:259) - org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:201) - org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:282) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter#doFilter(IsisLogOnExceptionFilter.java:52) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.apache.shiro.web.servlet.AbstractShiroFilter#executeChain(AbstractShiroFilter.java:449) - org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(AbstractShiroFilter.java:365) - org.apache.shiro.subject.support.SubjectCallable#doCall(SubjectCallable.java:90) - org.apache.shiro.subject.support.SubjectCallable#call(SubjectCallable.java:83) - org.apache.shiro.subject.support.DelegatingSubject#execute(DelegatingSubject.java:383) - org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInternal(AbstractShiroFilter.java:362) - org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:125) - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668) - org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:581) - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:143) - org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:548) - org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:226) - org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:1158) - org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:511) - org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:185) - org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:1090) - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:141) - org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:119) - org.eclipse.jetty.server.Server#handle(Server.java:517) - org.eclipse.jetty.server.HttpChannel#handle(HttpChannel.java:308) - org.eclipse.jetty.server.HttpConnection#onFillable(HttpConnection.java:242) - org.eclipse.jetty.io.AbstractConnection$ReadCallback#succeeded(AbstractConnection.java:261) - org.eclipse.jetty.io.FillInterest#fillable(FillInterest.java:95) - org.eclipse.jetty.io.SelectChannelEndPoint$2#run(SelectChannelEndPoint.java:75) - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#produceAndRun(ExecuteProduceConsume.java:213) - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#run(ExecuteProduceConsume.java:147) - org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:654) - org.eclipse.jetty.util.thread.QueuedThreadPool$3#run(QueuedThreadPool.java:572) - java.lang.Thread#run(Thread.java:745) On Fri, Dec 9, 2016 at 9:17 PM, Stephen Cameron <steve.cameron...@gmail.com> wrote: > No problem. > > On Fri, Dec 9, 2016 at 9:16 PM, Dan Haywood <d...@haywood-associates.co.uk> > wrote: > >> Sure.. I was just suggesting a couple of paragraphs capturing the contents >> of this particular thread, ie how to enable caching. >> >> >> On Fri, 9 Dec 2016 at 09:59 Stephen Cameron <steve.cameron...@gmail.com> >> wrote: >> >> > I'll see what I can do, its a new area for me and alot to read up on. >> Maybe >> > even a fast moving area at the moment, with things like Apache Ignite >> > >> > On Fri, Dec 9, 2016 at 6:00 PM, Dan Haywood < >> d...@haywood-associates.co.uk> >> > wrote: >> > >> > > Thanks for doing this exploration... I've made a note to add >> something to >> > > the docs, but even better would be a PR from yourself to add it. >> > Perhaps a >> > > new section in "other techniques" chapter of the "beyond the basics" >> > guide >> > > [1,2]? >> > > >> > > Cheers >> > > dan >> > > >> > > [1] http://isis.apache.org/guides/ugbtb.html#_ugbtb_other-techniques >> > > [2] >> > > https://github.com/apache/isis/blob/master/adocs/documentati >> on/src/main/ >> > > asciidoc/guides/_ugbtb_other-techniques.adoc >> > > >> > > >> > > >> > > On Thu, 8 Dec 2016 at 12:11 Stephen Cameron < >> steve.cameron...@gmail.com> >> > > wrote: >> > > >> > > > Hazelcast (https://hazelcast.org/) works 'out of the box' as a >> JSR-170 >> > > > javax.cache implementation. No config file expected. >> > > > >> > > > I have: >> > > > >> > > > 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 >> > > > >> > > > Then added the following dependencies: >> > > > >> > > > <dependency> >> > > > <groupId>javax.cache</groupId> >> > > > <artifactId>cache-api</artifactId> >> > > > <version>1.0.0</version> >> > > > </dependency> >> > > > >> > > > <dependency> >> > > > <groupId>com.hazelcast</groupId> >> > > > <artifactId>hazelcast</artifactId> >> > > > <version>3.7.3</version> >> > > > </dependency> >> > > > >> > > > It seems to make quite a significant difference to the speed of the >> > app. >> > > > but I should be measuring that to make any claims. >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > On Thu, Dec 8, 2016 at 8:35 PM, Stephen Cameron < >> > > > steve.cameron...@gmail.com> >> > > > wrote: >> > > > >> > > > > Thanks Andy, sorry for my astounding naïveté. >> > > > > >> > > > > I see now there is a page where JSR-107 implementations are >> listed: >> > > > > https://jcp.org/aboutJava/communityprocess/ >> > > implementations/jsr107/index. >> > > > > html >> > > > > >> > > > > 7.5 Billion people in the world and only one person working on >> > > > > DataNucleus, why?! >> > > > > >> > > > > >> > > > > >> > > > > On Thu, Dec 8, 2016 at 6:06 PM, Andy Jefferson < >> a...@datanucleus.org >> > > >> > > > > wrote: >> > > > > >> > > > >> > Caused by: org.datanucleus.exceptions.NucleusException: Error >> > > creating >> > > > >> > cache >> > > > >> > at >> > > > >> > org.datanucleus.cache.JavaxCacheLevel2Cache.<init>( >> > > > >> > JavaxCacheLevel2Cache.java:98) >> > > > >> >> > > > >> You did not put a Javax.cache provider in your CLASSPATH. As >> Oscar >> > > > >> suggested. >> > > > >> >> > > > >> DataNucleus provides "a simple wrapper to javax.cache's caches". >> So >> > > you >> > > > >> need to select an implementation of javax.cache (just like >> > DataNucleus >> > > > is >> > > > >> an implementation of javax.jdo, so you need to select your >> preferred >> > > > >> implementation of javax.cache). EHCache has one IIRC. >> > > > >> >> > > > >> You didn't really expect DataNucleus to implement its own >> > javax.cache >> > > > >> implementation as well as its own JDO implementation as well as >> its >> > > own >> > > > JPA >> > > > >> implementation, etc? All with 1 developer?! >> > > > >> >> > > > >> >> > > > >> Regards >> > > > >> -- >> > > > >> Andy >> > > > >> DataNucleus (Web: http://www.datanucleus.org Twitter: >> > @datanucleus) >> > > > >> >> > > > > >> > > > > >> > > > >> > > >> > >> > >