team, please remove from mailing list or let me know appropriate process. Thanks !
*Keith B. Martin | Customer Success | Pivotal Software* Mobile: 573-846-8138 | Email: [email protected] | Web: http://www.pivotal.io/ To keep current on Pivotal news and events, please visit: Pivotal News and Events <https://pivotal.io/news-events> On Thu, Dec 15, 2016 at 11:17 AM, Bruce Schuchardt <[email protected]> wrote: > +1 > > You need the key class on your server's classpath. The readSerialized > setting applies to cache values, not cache keys. > > Le 12/15/2016 à 4:57 AM, Luke Shannon a écrit : > > Try removing your Cache reference from your config. If the xml is being > bootstraped it will be created there. Then try referencing your Region as a > member of the class you are working in using the @Resource annotation. Ie: > > > > @Resource(name = "Parent") > private Region<?, ?> parent; > > > To get a reference to foo.ScheduleRequest from the Cache you will need to > have that class definition on your classpath (or that class defined in the > client in the same package). > > On Dec 15, 2016 3:57 AM, "Preben Asmussen DR" <[email protected]> wrote: > > Hi > > > > I’m trying out Geode in client server mode with the following setup > > > > Using gfsh I have created a region as > > create region --name=/schedule --type=REPLICATE_PERSISTENT > > > > and enabled pdx disk store on the server > > configure pdx --disk-store=DEFAULT > > > > The Spring Boot client is setup as > > *public* *class* GeodeClientConfiguration { > > > > @Bean > > ClientCache cache() { > > *return* *new* ClientCacheFactory() > > .setPdxPersistent(*true*) > > .addPoolLocator("localhost", 10334) > > .setPdxDiskStore("foo") > > .setPdxReadSerialized(*true*) > > .setPdxSerializer(*new* ReflectionBasedAutoSerializer(*false*, > "foo.ScheduleRequest", "bar.EpgProgram")) > > .create(); > > } > > > > @Bean > > Region<ScheduleRequest, List<EpgProgram>> testRegion(*final* > ClientCache cache) { > > *return* cache.<ScheduleRequest, List<EpgProgram>> getRegion( > "schedule"); > > } > > > > I has to include a cache.xml as > > <?xml version=*"1.0"* encoding=*"UTF-8"*?> > > <client-cache > > xmlns=*"http://geode.apache.org/schema/cache > <http://geode.apache.org/schema/cache>"* > > xmlns:xsi=*"http://www.w3.org/2001/XMLSchema-instance > <http://www.w3.org/2001/XMLSchema-instance>"* > > xsi:schemaLocation=*"http://geode.apache.org/schema/cache > <http://geode.apache.org/schema/cache>* > > * > http://geode.apache.org/schema/cache/cache-1.0.xsd > <http://geode.apache.org/schema/cache/cache-1.0.xsd>"* > > version=*"1.0"*> > > <pool name=*"serverPool"*> > > <locator host=*"localhost"* port=*"10334"*/> > > </pool> > > <pdx disk-store-name=*"foo"* read-serialized=*"true"*> > > <pdx-serializer> > > <class-name>org.apache.geode.pdx.ReflectionBasedAutoSerializer > </class-name> > > <parameter name=*"classes"*> > > <string>xxx….</string> > > </parameter> > > </pdx-serializer> > > > > </pdx> > > <region name=*"schedule"* refid=*"CACHING_PROXY"*> > > <region-attributes pool-name=*"serverPool"* > > scope=*"global"* /> > > </region> > > </client-cache> > > > > I guess this shouldn’t he necessary, but I didn’t currently manage to get > the java config work without it ?? > > > > Logs from boot startup shows that it is running in client mode > > [info 2016/12/15 09:31:49.278 CET <restartedMain> tid=0x14] Running in > client mode > > > > > > [info 2016/12/15 09:31:49.510 CET <restartedMain> tid=0x14] Pool > serverPool started with multiuser-authentication=false > > > > [info 2016/12/15 09:31:49.518 CET <poolTimer-serverPool-2> tid=0x28] > AutoConnectionSource discovered new locators [host/10.65.95.154:10334] > > > > [info 2016/12/15 09:31:49.519 CET <poolTimer-serverPool-3> tid=0x29] > Updating membership port. Port changed from 0 to 51.808. ID is now > A78029(1164:loner):0:00de9b01 > > > > When using the region in code as > > > > ScheduleRequest scheduleRequest = *new* ScheduleRequest(channel, > broadcastDate); > > List<EpgProgram> *list* = schedule.get(scheduleRequest); > > I get an Pdx Serialization exception > > > > 2016-12-15 09:32:50.465 INFO 1164 --- [nio-8080-exec-1] > o.s.web.servlet.DispatcherServlet : FrameworkServlet > 'dispatcherServlet': initialization completed in 24 ms > > [info 2016/12/15 09:32:54.564 CET <http-nio-8080-exec-1> tid=0x3c] Auto > serializer generating type for class foo.ScheduleRequest for fields: > > channel: private java.lang.String foo.ScheduleRequest.channel > > broadcastDate: private java.time.LocalDate > foo.ScheduleRequest.broadcastDate > > > > > > [info 2016/12/15 09:32:54.572 CET <http-nio-8080-exec-1> tid=0x3c] > Defining: PdxType[ > > dsid=0, typenum=2, name=foo.ScheduleRequest, fields=[ > > channel:String:0:idx0(relativeOffset)=0:idx1(vlfOffsetIndex)=-1 > > broadcastDate:Object:1:1:idx0(relativeOffset)=0:idx1(vlfOffs > etIndex)=1]] > > > > 2016-12-15 09:32:54.607 ERROR 1164 --- [nio-8080-exec-1] > o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet > [dispatcherServlet] in context with path [] threw exception [Request > processing failed; nested exception is > org.apache.geode.cache.client.ServerOperationException: > remote server on A78029(1164:loner):51808:00de9b01: > org.apache.geode.pdx.PdxSerializationException: Could not create an > instance of a class foo.ScheduleRequest] with root cause > > > > java.lang.ClassNotFoundException: foo.ScheduleRequest > > at org.apache.geode.internal.Clas > sPathLoader.forName(ClassPathLoader.java:426) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.Inte > rnalDataSerializer.getCachedClass(InternalDataSerializer.java:4006) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.pdx.internal. > PdxType.getPdxClass(PdxType.java:236) ~[geode-core-1.0.0-incubating. > jar:na] > > at org.apache.geode.pdx.internal. > PdxReaderImpl.basicGetObject(PdxReaderImpl.java:686) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.pdx.internal. > PdxReaderImpl.getObject(PdxReaderImpl.java:682) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.Inte > rnalDataSerializer.readPdxSerializable(InternalDataSerializer.java:3210) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.Inte > rnalDataSerializer.basicReadObject(InternalDataSerializer.java:3008) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.DataSerialize > r.readObject(DataSerializer.java:3281) ~[geode-core-1.0.0-incubating. > jar:na] > > at org.apache.geode.internal.util > .BlobHelper.deserializeBlob(BlobHelper.java:94) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.CacheServerHelper.deserialize(CacheServerHelper.java:82) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.Part.getObject(Part.java:273) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.Part.getObject(Part.java:282) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.Part.getStringOrObject(Part.java:287) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.command.Get70.cmdExecute(Get70.java:95) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.BaseCommand.execute(BaseCommand.java:147) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:783) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.ServerConnection.doOneMessage(ServerConnection.java:913) > ~[geode-core-1.0.0-incubating.jar:na] > > at org.apache.geode.internal.cach > e.tier.sockets.ServerConnection.run(ServerConnection.java:1180) > ~[geode-core-1.0.0-incubating.jar:na] > > at java.util.concurrent.ThreadPoo > lExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_73] > > at java.util.concurrent.ThreadPoo > lExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_73] > > at org.apache.geode.internal.cach > e.tier.sockets.AcceptorImpl$1$1.run(AcceptorImpl.java:546) > ~[geode-core-1.0.0-incubating.jar:na] > > at java.lang.Thread.run(Thread.java:745) > [na:1.8.0_73] > > > > I guess the geode server should have the pdx serializing pushed ? > > > > Best regards > > Preben > > > >
