| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > проблема с InputStream передачей в EJB |
| Автор: polosatij 28.11.2008, 17:30 | ||||
хая всем =) вылезки грабли при передачи InputStream из MBean в EJB: Stateless Session Bean. Это по сути два разных jar-a. Стрим открывается из jar-a где находится MBEan. На вход в EJB похоже либо вообще ничего не приходит, либо приходит мусор. попробовал передать Stream из файловой системы:
ошибка:
млин.. второй вариант сделал просто для теста. можно конечно передать просто path, но такой вариант меня не устраивает из за того, что в мою систему приходит большой стреам и сохранять его на жёском мне бы не очень хотелось.. есть у кого какие другие мысли? заранее пасиба |
| Автор: MisterCleric 28.11.2008, 17:53 |
| Здравствуй. Слушай, то ли я толком не понял, что тебе надо. То ли я не все знаю. Но по-моему в спецификации EJB ясно написано, что низя работать с файлами, так как файл-дескрипторы, которые открывает java ссылаются на системные объекты, т.е. в операционку. Да и вообще при вызове EJB-методов в нормальном распределенном приложении неизвестно, с какого места мы получили сам бин. Т.е. в результате лукапа он может приехать и с другой java-машины. Обернуться в RMI-вызов наконец. От сюда делаем выводы: передать в методы бина мы можем только серриализуемы объекты и простые типы. Согласно твоему топику ты передаешь несерриализуемый InputStream. Надо менять логику, что бы в EJB уже передавать объект. Да и разве это бизнес-объект (InputStream), с какими и должны работать бизнес-методы? |
| Автор: Asal 28.11.2008, 18:00 |
помоему при попытке передеть не Serializable сразу вылетает ошибка. Еще не рекомендуется EJB работать с файловой системой на-прямую (так вроде в спеке написано), надо через JNDI (для этого посмотрите Java Naming and Directory Interface (JNDI) File System Service Provider) |
| Автор: polosatij 28.11.2008, 18:06 | ||
да.. это бизнес объект в xml виде, но очень большой.. Asal, ок, пасиба.. надо посмотреть.. |
| Автор: MisterCleric 28.11.2008, 18:23 |
| Если это xml то тебе нужен сервис, который и работает с xml-лями. А вообще у меня есть тоже такая задача, но пока обратная. Надо получить объекты с базы, запаковать их в xml и отправить по FTP. Я для этих целей юзаю JAXB. Посмотри, мож тебе подойдет. У него также есть возможность из xml сделать java-объекты. Возможно тебе как раз это и надо. |
| Автор: polosatij 28.11.2008, 18:32 | ||
нет.. спАсибА, мне это не надА // пс: читаю: File System Service Provider, 1.2 Beta 3 |
| Автор: MisterCleric 28.11.2008, 18:44 |
| дык, может вынести данную логику с EJB? Вообще, я так вкратце посмотрел на интродакшн Stax, то типа можно стрим получить по урлу, ну и в принципе с любого места в сети или инэте. Т.е. можно и в бизнес-методе это сделать, если он все логику в себе заинкапсулирует, т.е. получение стрима, парсинг и т.д. Тебе нужен именно URL, а не path, что бы не привязываться к операционке |
| Автор: powerOn 28.11.2008, 18:50 | ||
Не только. Сериализуемые параметры нужно передовать если работа идет через Remote интерфейс, через локальный интерфейс можно передавать объекты по ссылке. |