2010-10-21 2 views
4

Я прочитал эту тему: J2EE/EJB + service locator: is it safe to cache EJB Home lookup result ? Я использую тот же подход, то есть получаю домашний объект EJB для своего сущности и кэширую его в сервлет.Безопасно ли доступ к домашнему объекту EJB из нескольких потоков?

Мой вопрос: это безопасно совместно использовать этот объект между несколькими потоками?

Из спецификации EJB 2.1 я обнаружил, что одновременные вызовы сущностных компонентов [через локальный/удаленный интерфейс] сериализуются внутри контейнера. Однако спецификация не распространяется на одновременные вызовы на домашние объекты.

Есть ли у кого-нибудь идеи? Также очень приветствуется ссылка на точное место в спецификации/документе.

ответ

3

EJBHome и EJBObject одинаково безопасны для потока. Контейнер несет всю ответственность за безопасность потоков этих реализаций.

Очень часто сервер приложений создает один экземпляр EJBHome компонента или EJBLocalHome и связывает его непосредственно в JNDI для всего приложения, которое нужно предоставить. Готов поспорить, если вы дважды посмотрели на свой EJBLocalHome изнутри сервлета и сравнили их с двумя, были бы хорошие шансы, что это был тот же самый экземпляр.

-2

Я не думаю, что EJBHome потокобезопасен потому

Во-первых, чтобы получить EJBHome объекта мы получаем помощь Синхронное объекта, такие как свойства и Hashtable

Второй, если мы реализуем BusinessDeleigate Design Pattern кэшировать EJBHome объект мы используем Synchronized Map для хранения EJBHome. Таким образом, только один поток может получить доступ к EJBHome.

-1

Помимо технической безопасности, существует вопрос о психической безопасности.

Принимая это во внимание, каждый Использование домашних объектов EJB 2.1 должно считаться небезопасным. Вам будет намного лучше смотреть на более здравый подход EJB 3, чем тратить время на EJB 2.x.

Смежные вопросы