ReaderInterceptor, WriterInterceptor поток безопасны? - PullRequest
0 голосов
/ 25 декабря 2018

Я хочу вызвать EJB без сохранения состояния из ReaderInterceptor, WriterInterceptor, но я не уверен, могут ли эти перехватчики вводить EJB или мне нужно каждый раз искать EJB?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

§6.4 спецификации JAX-RS 2.0 гласит:

... для каждого приложения JAX-RS создается отдельный экземпляр каждого фильтра или объекта-перехватчика....

Поэтому ваш перехватчик по определению является одиночным.Однако точка внедрения для вашего EJB будет состоять из прокси-сервера, который обеспечивает доступ к неиспользуемому экземпляру EJB без сохранения состояния каждый раз, когда он вызывается.Он может найти его в пуле предварительно созданных экземпляров или просто создать и инициализировать новый.

Кроме того, в п. 4.10.13 «Экземпляры без реентерабельности» спецификации EJB 3.2 говорится, что:

Контейнер должен гарантировать, что только один поток может выполнять состояние без состояния или с состояниемэкземпляр сессионного компонента в любое время.Следовательно, сессионные компоненты с сохранением состояния и без состояния не должны кодироваться как повторно входящие....

Итак, просто введите свой EJB.Контейнер позаботится о проблемах безопасности потоков от вашего имени.

0 голосов
/ 25 декабря 2018

Спецификация jax-rs 2.0 ничего не говорит о создании экземпляра для каждого запроса.Так что это не потокобезопасно

...