0

リージョン 'trade' の gemfire サーバーに書き込もうとしています。私のクラスは次のようなものです:

public class TradeDetails{
String exchange;
String Product;
String Account;
String Quantity;
//getter and setter }

jar を gfsh コンソールにデプロイしました。gfshコンソールで実行しているクエリは

put --key=1 --value=('exchange':'xyz','Product':'abc','Account':'xyz','Quantity':'123L') --region=/trade --value-class=model.TradeDetails

しかし、私はエラーが発生しています

JSON を型クラス model.TradeDetails のオブジェクトに変換できませんでした。

原因は何ですか?

4

1 に答える 1

0

まあ、GemFireのドキュメントによると あなたのGfshコマンド正しいようです... put

put --key=1 --value=('exchange':'xyz','Product':'abc','Account':'xyz','Quantity':'123L') --region=/trade - -value-class=model.TradeDetails

ただし、あなたのkey価値1は少し疑わしいです。java.lang.Long「/trade」リージョンで のキー制約を使用した場合は、 で--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」リージョンのキー タイプjava.lang.Longと値タイプは であることに注意してくださいorg.spring.data.gemfire.app.beans.Person

でも、「Jon Doe」を読み返そうとしたら、Gfshが吐き出しました...

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 ベースの) GemFire クライアント キャッシュ アプリケーション( SpringGemFireClientの基本構成) を作成して、Person を正常に引き戻しました。

Person is [Jon Doe]

model.TradeDetailsJackson マッピング アノテーションを使用してアプリケーション ドメイン タイプにアノテーションを付けてみることもできますが、 Gfshが実際にそれらを使用してマッピングを実行するかどうかは定かではありません。でも、それも悪くないでしょう。どちらにしても。

私のサーバーは、 SpringGemFireServerに基づくこのSpringGemFireDataServerで開始されたことに注意してください。

これが役に立てば幸いです(少し:-)。

乾杯!ジョン

于 2016-03-04T21:53:02.670 に答える