есть ли уважительная причина, все классы ресурсов трикотажа отмечены аннотацией @ManagedBean. Классы ресурсов уже отмечены аннотациями @Path и @Produces jaxrs. Разве контейнеру недостаточно рассматривать его как класс ресурсов jax-rs?
Управляемый компонент для классов ресурсов трикотажа
Ответы (2)
javax.annotation.ManagedBean не является jax-rs аннотацию, и из-за этого контейнер не должен ничего предполагать о jax-rs при чтении этой аннотации, поэтому да, @Path
и @Produces
достаточно, чтобы контейнер рассматривал ее как ресурс jax-rs. Вы можете использовать @ManagedBean, если хотите, чтобы контейнер предоставлял вашим ресурсам дополнительные службы (не связанные с jax-rs), проверьте ссылка.
@ManagedBean
требуется, если вы хотите внедрить свои EJB в ресурсы JAX-RS без использования аннотаций @Local и интерфейсов в ваших EJB.
Сравните следующие разделы документации Джерси:
- https://jersey.java.net/documentation/latest/deployment.html#deployment.javaee.managed
- https://jersey.java.net/documentation/latest/deployment.html#deployment.javaee.ejb
Таким образом, вы можете выбрать, какой подход лучше всего соответствует вашим потребностям: либо использовать @Local
интерфейс + @Stateless
EJB, либо внедрить свои @Stateless
EJB без @Local
интерфейса в ваш @ManagedBean
аннотированный ресурс.
Также взгляните на официальный пример: https://github.com/jersey/jersey/tree/master/examples/managed-beans-webapp