Então pessoal é mais uma confirmação de quem ja estudou isso.
Queria usar o ConversationScope do CDI em um ManagedBean do JSF e não funciona fica dando null pointer quando inicio o escopo de conversação
@ManagedBean(name="gameBean")
@ConversationScoped
public class GameBean implements Serializable {
se eu tirar o GameBean do JSF e deixar o CDI gerenciar ele ai rola a injecção de dependência do escopo de conversação.
@Named
@ConversationScoped
public class GameBean implements Serializable {
A pergunta é? Somente posso usar Escopo de Conversação do CDI com Bean gerenciados pelo CDI ou seja com @Named ao invés de @ManagedBean
Eu acredito que sim so queria uma confirmação.
De forma similar se eu quiser usar o ViewScope do JSF2
Não Funciona
@Named
@ViewScoped
public class viewScopeBean implements Serializable
Apenas se eu usar a anotação ManagedBean.
@ManagedBean
@ViewScoped
public class viewScopeBean implements Serializable{
pelo que pude concluir temos que escolher entre usar ConversarionScope ou ViewScope, o qual parece melhor o do CDI.
Também estou com as suas mesmas dúvidas. Mas pelo que já pesquisei é isso mesmo que você está pensando.
Não da pra usar os scopos do CDI em beans gerenciados pelo JSF e vice-versa.
Quanto a usar o ViewScoped em beans gerenciados pelo CDI tem uma alternativa. Que seria você implementar um ViewScoped customizado.
Felizmente a JBoss já fez esse trabalho pra gente. Baixe a biblioteca SeamFaces. No meu caso eu precise de 2 jars: seam-faces.jar e seam-solder.jar
O estranho é que na documentação eles dizem pra usar o ViewScoped do pacote javax.faces.bean, pelo menos foi o que eu entendi.
De qualquer forma o meu projeto está funcionando normalmente. Usando @Named com o @ViewScoped.