Я настроил канал REST для загрузки файла в соответствии со статьей IBM http://www-01.ibm.com/support/knowledgecenter/SS7K4U_7.0.0/com.ibm.websphere.web2mobile.mobile.application.services.help/docs/fileuploader_README.html?cp=SS7K4U_7.0.0%2F8-13-3:Websphere REST загрузки - не загружать загруженный файл в память
import org.apache.wink.common.model.multipart.BufferedInMultiPart;
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/upload")
public RestResult upload(BufferedInMultiPart bimp) {
List<InPart> parts = bimp.getParts();
// ....
}
я добавил потребление тест потока, просто чтобы убедиться, что запрос полностью обработан:
IOUtils.copy(part.getInputStream(), new NullOutputStream());
Я тестировал все с действительно большими загрузками - около 100 МБ. Я заметил резкое увеличение использования памяти на сервере Websphere, намного больше, загружая небольшие файлы. Я предполагаю, что это вызвано загрузкой загруженного файла в память после загрузки и перед вызовом моей функции upload
.
Возможно ли настроить инструмент так, чтобы большие файлы считывались в некоторый временный файл, а не в память?
Или возможно стать входящим входным потоком непосредственно в методе REST-канала?
Я использую каналы Websphere 8.5 и JAX-WS REST.
Да, я хотел бы написать, что в качестве комментария к этому IBM но вам нужен идентификатор IBM ID: –
@Donaudampfschifffreizeitfahrt Если вы хотите, вы все равно можете. Это бесплатная регистрация здесь - https://www.ibm.com/account/profile/us?page=reg также позволит вам участвовать в форумах developerWorks. :-) – Gas