коротше: ви навіть можете змішувати це ( @Singleton
і @ApplicationScoped
), і це має сенс у деяких сценаріях.
(і працює, як очікується в моєму!)
Додатково до інших відповідей поки що я хотів би додати ще кілька пунктів для роз'яснення в реальних сценаріях.
Для мене це запитання розроблено на тему Як змусити компонент з масштабом програми екземпляром під час запуску програми?
У ході певної дискусії я заявив це і поки що не можу знайти вагомого аргументу проти цього:
У багатьох реальних сценаріях / установках я б сказав, що важко точно визначити - з абстрактної / моделюючої точки зору - чи є щось (або стане / буде сприйматися як EJB) або керований бін, що охоплює додатки.
(дискусійні, але не остаточні) аргументи (з моєї точки зору) до цього часу проти: (@BalusC та всі інші: Я хотів би бачити, як вони є переконливими, але якщо ні, то вищезазначене може бути правдою, і тим не менше аргументи можуть як і раніше допомагають читачеві зрозуміти відмінності / переваги / недоліки / погані / хороші практики)
EJB проти керованого компонента
BalusC : Це EJB, а не керований бін, який зовсім інший. EJB працюють у серверній системі, а керовані компоненти - в інтерфейсі. EJB також працюють у транзакційному контексті. [...] Ви щойно переплутали корпоративні боби з керованими бобами, і я просто вказав на це.
але:
я : Я думаю, ви не зовсім коректні і завищуєте значення / вживання, і це здається мені дискусійним. http://en.wikipedia.org/wiki/Enterprise_JavaBeans
Enterprise JavaBeans (EJB) - це кероване серверне програмне забезпечення для модульної побудови корпоративного програмного забезпечення та одне з декількох API Java. EJB - це програмний компонент на стороні сервера, який інкапсулює бізнес-логіку програми.
Види Enterprise Beans
Сеансові боби [3], які можуть бути або "Державними", "Без громадянства" або "Сінглтон" [...]
Боби, що керуються повідомленнями [...]
... що досі справедливо в моєму випадку.
Singleton EJB проти Bean із сферою застосування
Блокування
BalusC : Односторонній EJB - це не те саме, що квасоля із сферою застосування. Односторонній EJB заблокований для читання / запису і, отже, потенційно неефективний / надто заплутаний для завдання, яке ви мали на увазі. Коротко кажучи: Візьміть хорошу книгу про Java EE і навчіться використовувати правильний інструмент для роботи. Один шлях однозначно не інший. Те, що це працює, не означає, що це правильний інструмент. Кувалда здатна закріпити гвинт, але це не обов'язково правильний інструмент для цього :)
але:
(Я не бачу тут кувалди - вибачте ...) Добре знати за замовчуванням заблоковані (я про це не знав), але це, схоже, знову неправильно: Підручник з керування паралельним доступом у Oracle Java EE 6 Сінгл Сеанс Бін
При створенні одиночного компонента сеансу одночасним доступом до бізнес-методів синглтона можна керувати двома способами: паралельним керуванням контейнером та паралельним керуванням біном. [...]
Хоча за замовчуванням одиночні використовують паралельно керовану контейнером, анотацію @ConcurrencyManagement (CONTAINER) може бути додана на рівні класу одиночної, щоб явно встановити тип управління паралельністю
@ApplicationScoped
та@Singleton
його розділом (с. 36).