我正在尝试写信给地区的宝石服务器' trade'。 我的班级就像:
public class TradeDetails{
String exchange;
String Product;
String Account;
String Quantity;
//getter and setter }
我已经在gfsh控制台中部署了jar。 我在gfsh控制台上运行的查询是
put --key=1 --value=('exchange':'xyz','Product':'abc','Account':'xyz','Quantity':'123L') --region=/trade --value-class=model.TradeDetails
但我收到错误
无法将JSON转换为类型类型的对象.TradeDetails。
可能是什么原因?
答案 0 :(得分:0)
嗯,根据 GemFire documenation,你的 Gfsh put
命令似乎是正确的......
put -key = 1 --value =('exchange':'xyz','Product':'abc','Account':'xyz','Quantity':'123L') - region = / trade --value-class = model.TradeDetails
但是,您的key
值1
有点可疑。如果您在“/ trade” Region 上使用了java.lang.Long
的键约束,那么您还需要在--key-class
上指定put
选项。
我能够成功执行以下操作......
$ gfsh
_________________________ __
/ _____/ ______/ ______/ /____/ /
/ / __/ /___ /_____ / _____ /
/ /__/ / ____/ _____/ / / / /
/______/_/ /______/_/ /_/ v8.2.0
Monitor and Manage GemFire
gfsh>connect
Connecting to Locator at [host=localhost, port=10334] ..
Connecting to Manager at [host=10.99.199.3, port=1099] ..
Successfully connected to: [host=10.99.199.3, port=1099]
gfsh>list members
Member Count : 1
Coordinator : SpringGemFireDataServer (10.99.199.3(SpringGemFireDataServer:77179)<v0>:47312)
Name | Id
----------------------- | ----------------------------------------------------
SpringGemFireDataServer | 10.99.199.3(SpringGemFireDataServer:77179)<v0>:47312
gfsh>describe member --name=SpringGemFireDataServer
Name : SpringGemFireDataServer
Id : 10.99.199.3(SpringGemFireDataServer:77179)<v0>:47312
Host : 10.99.199.3
Regions : People
PID : 77179
Groups :
Used Heap : 229M
Max Heap : 3641M
Working Dir : /Users/jblum/pivdev/spring-data-gemfire-tests-workspace/spring-data-gemfire-tests/target
Log file : /Users/jblum/pivdev/spring-data-gemfire-tests-workspace/spring-data-gemfire-tests/target
Locators : localhost[10334]
Cache Server Information
Server Bind : localhost
Server Port : 40404
Running : true
Client Connections : 0
gfsh>list regions
List of regions
---------------
People
gfsh>describe region --name=/People
..........................................................
Name : People
Data Policy : partition
Hosting Members : SpringGemFireDataServer
Non-Default Attributes Shared By Hosting Members
Type | Name | Value
------ | ---- | -----
Region | size | 0
gfsh>
gfsh>put --region=/People --key=1 --key-class=java.lang.Long --value=('firstName':'Jon','lastName':'Doe') --value-class=org.spring.data.gemfire.app.beans.Person
Result : true
Key Class : java.lang.Long
Key : 1
Value Class : org.spring.data.gemfire.app.beans.Person
Value
------
<NULL>
gfsh>
gfsh>describe region --name=/People
..........................................................
Name : People
Data Policy : partition
Hosting Members : SpringGemFireDataServer
Non-Default Attributes Shared By Hosting Members
Type | Name | Value
------ | ---- | -----
Region | size | 1
注意,我的“/ People” Region 的密钥类型为java.lang.Long
,值类型为org.spring.data.gemfire.app.beans.Person
。
虽然,当我试图阅读“Jon Doe”时, Gfsh puked ......
gfsh>get --region=/People --key=1 --key-class=java.lang.Long --value-class=org.spring.data.gemfire.app.beans.Person
Exception occurred. null
但是,我确实创建了一个(Spring Boot-based) GemFire client cache application base configuration SpringGemFireClient pulled the Person back out成功{。}}
Person is [Jon Doe]
您可以尝试使用Jackson映射注释来注释您的model.TradeDetails
应用程序域类型,但我不确定 Gfsh 实际使用它们来执行映射,因为我认为(当我持续检查时) ) Gfsh 没有使用杰克逊。但是,它也不会受到伤害。无论哪种方式。
注意,我的服务器是以SpringGemFireDataServer开头的,SpringGemFireServer基于{{3}}。
希望这会有所帮助(有点: - )。
干杯! 约翰