2016-04-26 7 views
1

純粋でシンプルな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解析を行うための技術はありますか?

答えて

2

出力は次の文字で区切られているため、投稿した内容はthisと似ています。文字列をシリアル化されたjsonレスポンスの配列に分割するために、このメソッドを使用することができます。

次に、それらを個別に解析してjsonオブジェクトにすることができます。

+0

It's alive !!!!手伝ってくれてありがとう! –

関連する問題