1
我已經有純粹和簡單的Java Nio套接字服務器。使用JSON實現數據傳輸。有1個客戶端都可以正常工作,但是當我嘗試啓動工作負載測試時,出現了一些問題。這裏是我的分析傳入的字節緩衝區方法(MessageFromBuffer僅僅是字節[]的包裝):從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 - 一切工作正常。但是,在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解析技術?
它還活着!感謝幫助! –