Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Как вернуть InputStream из remote EJB3


Автор: xaoc2 9.12.2009, 04:22
Как вернуть InputStream или его аналог из remote EJB3, луше всего из JBoss , попутно:
Как можно использовать OutputStream или его аналог как параметр remote EJB3.
Есть какие нибудь варианты?

Автор: Joss 9.12.2009, 09:45
Дык, потоки же не сериализируемые.

Автор: Egik2 9.12.2009, 10:52
Так сделать не получится, я пробовал smile.
Если тебе требуется просто вернуть какой-нить бинарный объект, я например сталкивался с тем, что EJB
должен вернуть PDF документ, то просто можно сделать так:

ByteArrayOutputStream ba = new ByteArrayOutputStream();
Потом пишешь, что тебе надо в ba, и в конце
return ba.toByteArray();

Потом, клиент вызвавший метод получает byte[] и делает с ним, что хочет.

Автор: xaoc2 9.12.2009, 22:10
Egik2:примерно так я сейчас делаю, только по другому:
http://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html#readFileToByteArray%28java.io.File%29

Но, это принципиальный вопрос, так как сейчас использование оперативной памяти O(n) а хотелось бы O(1)

Автор: COVD 10.12.2009, 07:35
Цитата

сейчас использование оперативной памяти O(n) а хотелось бы O(1)

Это что значит? Вы хотите не дожидаться загрузки файл в память целиком, а сразу отправлять потребителю части файла по мере чтения их с диска? Насколько я понимаю, RMI такого сценария не предполагает. Так работает ResultSet в JDBC. В RMI это можно имитировать серией запросов клиента в цикле. Каждый запрос будет возвращать следующую порцию данных. И так пока не будет получен ответ, что данных больше нет. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)