Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Injecting JSF Managed Bean to a EJB

Is is possible to inject JSF Managed Bean into an EJB? I have injected JSF Managed Beans in to another JSF Managed Bean as a @ManagedProperty. But when I do the same to the EJB, I get a null point exception.

like image 540
Buddhika Ariyaratne Avatar asked Dec 21 '22 03:12

Buddhika Ariyaratne


1 Answers

No, that's not possible. The @ManagedProperty works inside @ManagedBean classes (JSF managed beans) only. You can only use @EJB or @Inject to inject another EJB or a CDI managed bean (a @Named class).

However, it makes design technically no sense to inject a front-end class like a JSF or CDI managed bean in a business service class like an EJB. An EJB should be designed in such way that it can without changes be reused together a completely different front-end like JAX-RS webservice or even a plain vanilla servlet. An EJB should absolutely not have any javax.faces.* imports/dependencies (like as that it should not have any javax.ws.rs.* nor javax.servlet.* ones).

If you intend to pass data from the JSF managed bean to an EJB, then just pass it as method argument. Such data is usually in flavor of a JPA @Entity or at least an ID/keyword which returns an entity.

like image 155
BalusC Avatar answered Dec 31 '22 16:12

BalusC