Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с InputStream передачей в EJB, MBean -- (InputStream) ---> EJB Statess 
:(
    Опции темы
polosatij
  Дата 28.11.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8





хая всем =)

вылезки грабли при передачи InputStream из MBean в EJB: Stateless Session Bean. Это по сути два разных jar-a. Стрим открывается из jar-a где находится MBEan. На вход в EJB похоже либо вообще ничего не приходит, либо приходит мусор.

попробовал передать Stream из файловой системы:

Код

        return new FileInputStream(TMP_AIXM_DIR + pAIXMFilePath);


ошибка:

Код

14:53:46,344 FATAL [AIXMParserUtil] Bad file descriptor
com.ctc.wstx.exc.WstxIOException: Bad file descriptor
        at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:452)
        at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:498)
        at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:510)


млин.. второй вариант сделал просто для теста. можно конечно передать просто path, но такой вариант меня не устраивает из за того, что в мою систему приходит большой стреам и сохранять его на жёском мне бы не очень хотелось..

есть у кого какие другие мысли?   smile 

заранее пасиба  smile 


--------------------
PM   Вверх
MisterCleric
Дата 28.11.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Здравствуй.
Слушай, то ли я толком не понял, что тебе надо. То ли я не все знаю.
Но по-моему в спецификации EJB ясно написано, что низя работать с файлами, так как файл-дескрипторы, которые открывает java ссылаются на системные объекты, т.е. в операционку.
Да и вообще при вызове EJB-методов в нормальном распределенном приложении неизвестно, с какого места мы получили сам бин. Т.е. в результате лукапа он может приехать и с другой java-машины. Обернуться в RMI-вызов наконец. От сюда делаем выводы: передать в методы бина мы можем только серриализуемы объекты и простые типы. Согласно твоему топику ты передаешь несерриализуемый InputStream.
Надо менять логику, что бы в EJB уже передавать объект. 
Да и разве это бизнес-объект (InputStream), с какими и должны работать бизнес-методы?


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
polosatij
Дата 28.11.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(MisterCleric @  28.11.2008,  17:53 Найти цитируемый пост)
Слушай, то ли я толком не понял, что тебе надо. То ли я не все знаю.
Но по-моему в спецификации EJB ясно написано, что низя работать с файлами, так как файл-дескрипторы, которые открывает java ссылаются на системные объекты, т.е. в операционку.
Да и вообще при вызове EJB-методов в нормальном распределенном приложении неизвестно, с какого места мы получили сам бин. Т.е. в результате лукапа он может приехать и с другой java-машины. Обернуться в RMI-вызов наконец. От сюда делаем выводы: передать в методы бина мы можем только серриализуемы объекты и простые типы. Согласно твоему топику ты передаешь несерриализуемый InputStream.
Надо менять логику, что бы в EJB уже передавать объект. 
Да и разве это бизнес-объект (InputStream), с какими и должны работать бизнес-методы? 


ты правильно понял.. и я так понимаю, ты прав, возьмём даже ситуацию с удалённым объектом EJB.. конечно же, наврятли ява будет передавать некий поток по сети *рен его знает куда.. хм.. тересна.. но у меня всё бегает на одной машине.. тересна можно ли extends InputStream и implements Serializable.. возможно можно, но вдруг мои рано или поздно решат разделить приложения по разным машинам.. хмммм.. тогда остаётся одно, передать path и на другом конце проверить, есть ли такой в системе..  smile 


--------------------
PM   Вверх
Asal
Дата 28.11.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 26.12.2006
Где: Минск

Репутация: 4
Всего: 7



Цитата(MisterCleric @  28.11.2008,  17:53 Найти цитируемый пост)
можем только серриализуемы объекты и простые типы

помоему при попытке передеть не Serializable сразу вылетает ошибка.
Еще не рекомендуется EJB работать с файловой системой на-прямую (так вроде в спеке написано), 
надо через JNDI (для этого посмотрите Java Naming and Directory Interface™ (JNDI) File System Service Provider)


--------------------
PM MAIL ICQ   Вверх
polosatij
Дата 28.11.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(MisterCleric @  28.11.2008,  17:53 Найти цитируемый пост)
Да и разве это бизнес-объект (InputStream), с какими и должны работать бизнес-методы? 


да.. это бизнес объект в xml виде, но очень большой..


Asal, 

ок, пасиба.. надо посмотреть..  smile 


--------------------
PM   Вверх
MisterCleric
Дата 28.11.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Если это xml то тебе нужен сервис, который и работает с xml-лями.
А вообще у меня есть тоже такая задача, но пока обратная. Надо получить объекты с базы, запаковать их в xml и отправить по FTP.
Я для этих целей юзаю JAXB. Посмотри, мож тебе подойдет. У него также есть возможность из xml сделать java-объекты. Возможно тебе как раз это и надо.


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
polosatij
Дата 28.11.2008, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(MisterCleric @  28.11.2008,  18:23 Найти цитируемый пост)
Если это xml то тебе нужен сервис, который и работает с xml-лями.
А вообще у меня есть тоже такая задача, но пока обратная. Надо получить объекты с базы, запаковать их в xml и отправить по FTP.
Я для этих целей юзаю JAXB. Посмотри, мож тебе подойдет. У него также есть возможность из xml сделать java-объекты. Возможно тебе как раз это и надо. 


нет.. спАсибА, мне это не надА  smile мне нужен InputStream для Stax parser-a в EJB  smile 

// пс: читаю: File System Service Provider, 1.2 Beta 3  smile 



--------------------
PM   Вверх
MisterCleric
Дата 28.11.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



дык, может вынести данную логику с EJB? 
Вообще, я так вкратце посмотрел на интродакшн Stax, то типа можно стрим получить по урлу, ну и в принципе с любого места в сети или инэте. Т.е. можно и в бизнес-методе это сделать, если он все логику в себе заинкапсулирует, т.е. получение стрима, парсинг и т.д.
Тебе нужен именно URL, а не path, что бы не привязываться к операционке


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
powerOn
Дата 28.11.2008, 18:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



Цитата(MisterCleric @  28.11.2008,  17:53 Найти цитируемый пост)
От сюда делаем выводы: передать в методы бина мы можем только серриализуемы объекты и простые типы. 


Не только. Сериализуемые параметры нужно передовать если работа идет через Remote интерфейс, через локальный интерфейс можно передавать объекты по ссылке.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.