純粋でシンプルなJava Nio Socket Serverがあります。 JSONでデータ転送を実現。 1 clienはすべて正常に動作しますが、ワークロードテストを開始しようとしているときに問題が発生しました。すべて正常に動作します -ByteBufferから複数のJSONを解析する
private JSONObject parseIncomingMessageToJson(MessageFromBuffer messageFromBuffer) {
int size = messageFromBuffer.getSize();
byte[] data = messageFromBuffer.getData();
byte[] dataCopy = new byte[size];
System.arraycopy(data, 0, dataCopy, 0, size);
JSONParser jsonParser = new JSONParser();
JSONObject jsonMessage = null;
try {
jsonMessage = (JSONObject) jsonParser.parse(new String(dataCopy));
} catch (ParseException pe) {
System.out.println("Error formatting incoming message to json: " + new String(messageFromBuffer.getData()));
}
return jsonMessage;
}
一つだけのJSONエンティティのバッファcosistsは:ここでは(MessageFromBuffer []はバイトのための単なるラッパーである)、着信のByteBufferを解析するための私の方法です。しかし、100クライアントの攻撃中に、バッファが示すように、(すべてのテストのクライアントが同じデータを送信する)、複数のJSON enities移入することができます。
Error formatting incoming message to json: {"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
{"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
{"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
{"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
{"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
{"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
{"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
{"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
{"TYPE":"REGISTRATION","LOGIN":"Padre","PASSWORD":"3214"}
メソッドは例外と何も収益をスローします。 SOcketChanelからの各読み取りの後、私はバッファをクリアします - そのため、これらのメッセージはすべて失われます。このような状況で適切なJSON解析を行うための技術はありますか?
It's alive !!!!手伝ってくれてありがとう! –