-1
現在、広範囲のクライアントで正常に動作する既存のWCF SOAPサービスがあります。より大きなファイルセットをダウンロードする方法として、StreamBodyを提示します。私は、クライアントがファイルを完全にメモリにロードすることなく、大きなファイルをダウンロードしようとするあらゆる方法を試みました。私はあらゆる試みをしています。本質的に、以下を呼び出すことにより、JAVAクライアントは完全なファイルをメモリにロードしたい。私は提案を探しています。WCF SOAPサービスからJAVAクライアントへの大容量ファイルのダウンロードに伴うメモリの問題
OrderServiceStub stub = getOrderServiceStub();
OrderServiceStub.GetStreamedOrderOutputRequestMessage getStreamedOrderOutputRequestMessage = new OrderServiceStub.GetStreamedOrderOutputRequestMessage();
OrderServiceStub.GetStreamedOrderOutputRequest getStreamedOrderOutputRequest = new OrderServiceStub.GetStreamedOrderOutputRequest();
for (OrderServiceStub.OrderOutput o : orderoutput.getOrderOutput()){
OrderServiceStub.Guid guidOutput = o.getOrderOutputTicket();
String fileName = o.getOrderOutputName();
getStreamedOrderOutputRequest.setOrderOutputTicket(guidOutput);
getStreamedOrderOutputRequestMessage.setGetStreamedOrderOutputRequest(getStreamedOrderOutputRequest);
int bufferSize = 1024;
InputStream is = new BufferedInputStream(stub.getStreamedOrderOutput(getStreamedOrderOutputRequestMessage).getFileData().getStreamBody().getInputStream());
OutputStream os = new FileOutputStream(new File("C:\\temp\\" + fileName));
org.apache.commons.io.IOUtils.copyLarge(is, os);
org.apache.commons.io.IOUtils.closeQuietly(is);
org.apache.commons.io.IOUtils.closeQuietly(os);
}
いいえ、そうではありません。 'IOUtils.copyLarge(InputStream in、OutputStream out)'は4kのバッファを使います。あなたの問題は他のところにあります。 – EJP