我试图将gemfire rest api与gemfire本机客户端一起使用。 我的工作是什么:
当我尝试使用@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客户端之间的互操作性,必须遵循以下规则:
- 所有通过REST接口访问的GemFire Java和本机客户端类都必须通过PDX自动化或通过实现PdxSerializable进行PDX序列化。
- GemFire Java客户端和本机客户端可以使用PdxInstance.getObject方法以PdxInstance或实际对象的形式检索启用REST的数据。如果使用后一种方法,则必须首先在REST中创建对象时在POST或PUT请求有效负载中声明对象类型(@type);其次,Java客户端必须在其CLASSPATH中具有实际的域类。
醇>
我看到我的PDX autoserialization正在运行。所以我执行创建/更新请求。但@type
并未像我预期的那样处理。
我有宝石版本8.2.0
我唯一的解决方案是实施PdxSerializable
?
我所做的一个基本例子:
我的对象Person有字段:id,name。它位于com.package
。
PUT
请求/gemfire-api/v1/{region}/{key}
:
'{ "@type":"com.package.Person", "id":"someId", "name":"name" }'
getObject()
将其强制转换为Person对象 - 我有错误