Могут ли кэшироваться удаленные ссылки на сессионные компоненты без сохранения состояния в EJB3? - PullRequest
5 голосов
/ 05 апреля 2009

Я вызываю удаленный сессионный компонент без сохранения состояния из приложения J2SE и хотел бы кэшировать ссылку на сессионный компонент, чтобы уменьшить стоимость поиска. Это нормально?

В EJB2 шаблон ServiceLocator обычно использовался для кэширования поиска на удаленных ресурсах, но EJB3 не имеет отдельных объектов EJB Home (которые обычно кэшировались) и Remote.

Поискивая, общий ответ на это заключается в использовании EJB3-инъекции, но, поскольку я выполняю вызов удаленного EJB-сервера из клиента J2SE, я не могу использовать инъекцию.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2009

Да, они могут быть кэшированы. Но я не знаю, определено ли поведение, что произойдет, если у вас будет кешированная ссылка и сервер будет перезагружен под ней. Вы можете проверить этот сценарий, но поведение может отличаться в зависимости от контейнера.

1 голос
/ 16 апреля 2009

Если сервер отключается, ваши ссылки становятся недействительными.

Что касается кэширования в течение нормального жизненного цикла, это должно быть хорошо. Я делал это годами, как в EJB2, так и в EJB3, и у меня никогда не было проблем. Обычно у меня просто есть статический класс LookupServices, который просто ищет дом или возвращает существующий, если он уже есть, и сохраняет его на карте.

...