2

次のコードを jersey クライアントとして使用して、InputStream オブジェクトをサーバーに送信しています。

public static boolean assignDATask(Map<String,Future<InputStream>> daInitTaskResponseMap, String daId, String campaignId,  List<Map> contList, Map campInfoBean, List<Map> campLinkBeanList, List<Map> timetableList, InputStream zippedAttachmentsStream, Map daTaskInfoBean, Map accountInfoBean){
    AsyncWebResource asr = daWebResourceMap.get(daId);
    if (asr!=null) {
        try {
            Integer readTimeoutValue = daReadTimeoutMap.get(daId).getDataAsInteger("assignBatch", DA_READ_TIMEOUT_ASSIGNBATCH_DEFAULT);
            asr.setProperty(ClientConfig.PROPERTY_READ_TIMEOUT, readTimeoutValue);
            FormDataMultiPart part = new FormDataMultiPart();
            part.field("crmId", crmId, MediaType.APPLICATION_XML_TYPE);
            part.field("campaignId", campaignId, MediaType.APPLICATION_XML_TYPE);
            if (contList!=null)
                part.field("contList", Util.zipDATransferParams(contList), MediaType.APPLICATION_XML_TYPE);
            if (campInfoBean!=null)
                part.field("campInfoBean", Util.zipDATransferParams(campInfoBean), MediaType.APPLICATION_XML_TYPE);
            if (campLinkBeanList!=null)
                part.field("campLinkBeanList", Util.zipDATransferParams(campLinkBeanList), MediaType.APPLICATION_XML_TYPE);
            if (timetableList!=null)
                part.field("timetableList",  Util.zipDATransferParams(timetableList), MediaType.APPLICATION_XML_TYPE);
            if (zippedAttachmentsStream!=null)
                part.field("zippedAttachmentsStream", zippedAttachmentsStream, MediaType.APPLICATION_XML_TYPE);
            part.field("daTaskInfoBean", Util.zipDATransferParams(daTaskInfoBean), MediaType.APPLICATION_XML_TYPE);
            if (accountInfoBean!=null)
                part.field("accountInfoBean", Util.zipDATransferParams(accountInfoBean), MediaType.APPLICATION_XML_TYPE);
            logger.debug("part size: "+SizeOf.deepSizeOf(part));
            Future<InputStream> assignDATaskResult =  asr.path("initDASendECampTask").type(MediaType.MULTIPART_FORM_DATA_TYPE).post(InputStream.class, part);
            logger.debug("assignDATaskResult size: "+SizeOf.deepSizeOf(assignDATaskResult));
            daInitTaskResponseMap.put(daId,assignDATaskResult);
            logger.debug("-----------------------------Current Time Sender: "+System.currentTimeMillis());
        } catch (IOException ioe) {
            logger.debug("Fail to zip the parameters", ioe);
            return false;
        }
    } else {
        logger.debug("DA not exist, DA ID: "+ daId);
        return true;
    }

    return true;
}

FormDataMultiPart は 72 バイトです。ただし、応答オブジェクト (assignDATaskResult) は約 26 MB です。assignDATaskResult が ServletContext でラップされていることも知っています。

次に、ジャージーで送信するオブジェクトのサイズを測定する方法を知りたいですか?

統計によると、ネットワーク上のトラフィックは高く、2 時間のデータ転送で約 80 kB/s (640 kbps) です。

また、そのトラフィックを減らす方法はありますか?.おそらくJSONに変換しますか?

どんな助けでも大歓迎です。

4

0 に答える 0