Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 |
Так сделать не получится, я пробовал ![]() Если тебе требуется просто вернуть какой-нить бинарный объект, я например сталкивался с тем, что 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 | ||
Это что значит? Вы хотите не дожидаться загрузки файл в память целиком, а сразу отправлять потребителю части файла по мере чтения их с диска? Насколько я понимаю, RMI такого сценария не предполагает. Так работает ResultSet в JDBC. В RMI это можно имитировать серией запросов клиента в цикле. Каждый запрос будет возвращать следующую порцию данных. И так пока не будет получен ответ, что данных больше нет. |