Я нахожусь в процессе переноса приложения EJB 2 в EJB 3 (и что это за удовлетворительная задача - удалить все эти дескрипторы развертывания!). Раньше он работал на Weblogic и теперь работает на Glassfish.
Задача идет очень гладко, но меня беспокоит одна вещь: текущий код уделяет большое внимание обеспечению того, чтобы EJBObject.remove()
вызывался в bean-компоненте, когда он выполнил свою работу, и у других разработчиков была (к сожалению, очень расплывчатая) память о "плохих вещах", происходящих, когда этого не было сделано.
Однако в EJB3 класс реализации не реализует EJBObject
, поэтому нет метода remove()
для вызова. И я понимаю, что в действительности нет никакого смысла вызывать его для сессионных компонентов без сохранения состояния, поскольку они, ну, в общем, не сохраняют состояния.
Могли ли эти "плохие вещи" быть привязаны к сети? Если нет, то что еще? Должен ли я избежать полной легкости EJB3 и сохранить удаленный интерфейс, расширяющий EJBObject
? Или просто списать это как программирование грузового культа и удалить все эти предложения try / finally?
Я склоняюсь к последнему, но чувствую себя не очень комфортно с ним.