How do you wire PdxSerializer on the server side?

you might want to check

https://gemfire.docs.pivotal.io/geode/developing/data_serialization/use_pdx_serializer.html
and

https://gemfire.docs.pivotal.io/geode/tools_modules/gfsh/command-pages/configure.html#topic_jdkdiqbgphqh
 for pdx configuration either through code or pure gfsh.

-Xiawei

On Thu, 7 Sep 2017 at 11:32 PM, Xu, Nan <[email protected]> wrote:

> Btw, I don’t see anything at server log, where should I check this problem?
>
>
>
> *From:* Xu, Nan
> *Sent:* Thursday, September 07, 2017 10:23 AM
> *To:* [email protected]
> *Subject:* [External email from user-return-2063-nxu2=
> [email protected]] pdx serializer, need help
>
>
>
> hi,
>
>
>
>    I try to use pdx serializer for a very simple class. After I deploy it
> to server, the gfsh query prompt me. Really can not see where can go
> wrong.  Can someone give suggestion?
>
>
>
> Btw, from client side, it works fine as this.
>
>
>
> public class Get {
>
>     public static void main(String[] args) throws InterruptedException {
>
>
>
>         Properties prop = new Properties();
>
>         prop.setProperty("conserve-sockets","false");
>
>         ClientCache cache = new
> ClientCacheFactory(prop).addPoolLocator("centos", 10334)
>
>                 .setPdxSerializer(new MyPdxSerializer())
>
>                 .set("log-level", "info")
>
>                 .create();
>
>
>
>
>
>         ClientRegionFactory<String, Simple> regionFactory =
> cache.createClientRegionFactory(ClientRegionShortcut.PROXY);
>
>
>
>         Region<String, Simple> region = regionFactory.create("test");
>
>
>
>         Simple s =  region.get("key1");
>
>         System.out.println("====================:" +s.getId() +" "+
> s.getName() + " " + s.getTime());
>
>
>
>     }
>
> }
>
>
>
> Thanks a lot.
>
>
>
> Nan
>
>
>
>
>
> On the server query, it breack…
>
>
>
> gfsh>query --query="select * from /test"
>
>
>
> Result     : false
>
> startCount : 0
>
> endCount   : 20
>
> Message    : Could not deserialize pdx because the pdx serializer's
> fromData returned false for a pdx of class pojo.Simple
>
>
>
>
>
>
>
> Here is my class
>
>
>
> public class MyPdxSerializer  implements PdxSerializer, Declarable {
>
>
>
>     @Override
>
>     public void init(Properties props) {
>
>
>
>     }
>
>
>
>     @Override
>
>     public boolean toData(Object o, PdxWriter writer) {
>
>         if(!(o instanceof Simple)) {
>
>             return false;
>
>         }
>
>         Simple s = (Simple) o;
>
>         writer.writeString("id", s.id)
>
>                 .writeString("name", s.getName())
>
>                 .writeObject("time", s.getTime());
>
>
>
>
>
>         return true;
>
>     }
>
>
>
>     @Override
>
>     public Object fromData(Class<?> clazz, PdxReader reader) {
>
> ;
>
>         if(!clazz.equals(Simple.class)) {
>
>             return null;
>
>         }
>
>         Simple s = Simple.getInstance();
>
>         s.id = reader.readString("id");
>
>         s.name = reader.readString("name");
>
>         s.time = (Timestamp) reader.readObject("time");
>
>         return s;
>
>     }
>
> }
>
>
>
> And my domain object.
>
>
>
> public class Simple {
>
>
>
>     public static Simple getInstance(){
>
>         return new Simple();
>
>     }
>
> //    private Simple(){}
>
>     String id;
>
>
>
>     public String getId() {
>
>         return id;
>
>     }
>
>
>
>     public void setId(String id) {
>
>         this.id = id;
>
>     }
>
>
>
>     String name;
>
>     Timestamp time;
>
>
>
>     public String getName() {
>
>         return name;
>
>     }
>
>
>
>     public void setName(String name) {
>
>         this.name = name;
>
>     }
>
>
>
>     public Timestamp getTime() {
>
>         return time;
>
>     }
>
>
>
>     public void setTime(Timestamp time) {
>
>         this.time = time;
>
>     }
>
> }
>
>
> ------------------------------
>
> This message, and any attachments, is for the intended recipient(s) only,
> may contain information that is privileged, confidential and/or proprietary
> and subject to important terms and conditions available at
> http://www.bankofamerica.com/emaildisclaimer. If you are not the intended
> recipient, please delete this message.
> ------------------------------
> This message, and any attachments, is for the intended recipient(s) only,
> may contain information that is privileged, confidential and/or proprietary
> and subject to important terms and conditions available at
> http://www.bankofamerica.com/emaildisclaimer. If you are not the intended
> recipient, please delete this message.
>

Reply via email to