Gemfire' @ type'不工作

时间:2018-05-28 10:22:07

标签: gemfire

我试图将gemfire rest api与gemfire本机客户端一起使用。 我的工作是什么:

  1. 通过本机客户端查找我的对象
  2. 通过rest api检索和删除同一个对象
  3. 当我尝试使用@type的rest api执行创建/更新,然后尝试通过gemfire本机客户端获取它

      

    " com.gemstone.gemfire.pdx.internal.PdxInstanceImpl无法转换为...

    我检查了文档: https://gemfire.docs.pivotal.io/95/geode/rest_apps/rest_prereqs.html

      

    要实现GemFire Java客户端(或GemFire本机客户端)与REST客户端之间的互操作性,必须遵循以下规则:

         
        
    1. 所有通过REST接口访问的GemFire Java和本机客户端类都必须通过PDX自动化或通过实现PdxSerializable进行PDX序列化。
    2.   
    3. GemFire Java客户端和本机客户端可以使用PdxInstance.getObject方法以PdxInstance或实际对象的形式检索启用REST的数据。如果使用后一种方法,则必须首先在REST中创建对象时在POST或PUT请求有效负载中声明对象类型(@type);其次,Java客户端必须在其CLASSPATH中具有实际的域类。
    4.   

    我看到我的PDX autoserialization正在运行。所以我执行创建/更新请求。但@type并未像我预期的那样处理。

    我有宝石版本8.2.0

    我唯一的解决方案是实施PdxSerializable

    我所做的一个基本例子:

    我的对象Person有字段:id,name。它位于com.package

    1. 我使用gemfire本地客户端保存我的对象。
    2. 我执行带有效负载的Http PUT请求/gemfire-api/v1/{region}/{key}'{ "@type":"com.package.Person", "id":"someId", "name":"name" }'
    3. 我尝试使用HTTP GET检索它 - 成功
    4. 我尝试使用gemfire本机客户端检索它并使用getObject()将其强制转换为Person对象 - 我有错误

0 个答案:

没有答案