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( vlfOffsetIndex)=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. ClassPathLoader.forName(ClassPathLoader.java:426) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. InternalDataSerializer.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. InternalDataSerializer.readPdxSerializable(InternalDataSerializer.java:3210) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. InternalDataSerializer.basicReadObject(InternalDataSerializer.java:3008) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.DataSerializer.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. cache.tier.sockets.CacheServerHelper.deserialize(CacheServerHelper.java:82) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. cache.tier.sockets.Part.getObject(Part.java:273) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. cache.tier.sockets.Part.getObject(Part.java:282) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. cache.tier.sockets.Part.getStringOrObject(Part.java:287) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. cache.tier.sockets.command.Get70.cmdExecute(Get70.java:95) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. cache.tier.sockets.BaseCommand.execute(BaseCommand.java:147) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. cache.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:783) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. cache.tier.sockets.ServerConnection.doOneMessage(ServerConnection.java:913) ~[geode-core-1.0.0-incubating.jar:na] at org.apache.geode.internal. cache.tier.sockets.ServerConnection.run(ServerConnection.java:1180) ~[geode-core-1.0.0-incubating.jar:na] at java.util.concurrent. ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_73] at java.util.concurrent. ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_73] at org.apache.geode.internal. cache.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
