I have a Session scoped bean
import javax.faces.bean.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class SessionBean implements Seri
You can't mix annotations from those two packages you're using javax.faces.bean.SessionScoped
for JSF, and import javax.inject.Named
for CDI. Both reflect different injection mechanisms and cannot be mixed on the same bean. You have to pick both annotations(for Injection and Bean Scoping) from the same package. Use the following sets from their corresponding packages
For CDI-based bean definitions
javax.enterprise.context.SessionScoped //for bean scoping
javax.inject.Named //for bean declaration
javax.inject.Inject //for injection
For JSF-based bean definitions
javax.faces.bean.SessionScoped //for bean scoping
javax.faces.bean.ManagedBean //for bean declaration
javax.faces.bean.ManagedProperty //for bean injection
EDIT: Now I understand your requirements better, use the following construct to inject a JSF managed bean
@ManagedProperty(value="#{yourBeanName}")
SessionBean yourSessionBean;
Also note that within JSF, you can inject only beans of a wider scope than their targets e.g. you can inject a @SessionScoped
bean into a @RequestScoped
bean and not the other way around
But since JSF managed beans are deprecated, better to use the CDI managed ones. In that case you can inject shorter scoped beans in wider scoped ones