Boa tarde,
Estou com problemas em usar o @ConversationScoped do CDI.
No meu código eu faço o seguinte:
@Named
@ConversationScoped
public class Login implements Serializable {
…
@Inject
private UsuarioDAO dao;
private @Inject Conversation conversation;
…
public void init () {
if (conversation.isTransient()) {
conversation.begin();
}
}
…
public String entrar () {
init();
usuario=dao.find(this.login);
if (usuario!=null) {
return "portal";
}
return "login";
}
}
Botão na tela:
<h:commandButton id=“entrar” value=“Entrar” action="#{login.entrar}" />
Contudo, recebo sempre a exceção abaixo:
javax.enterprise.context.ContextNotActiveException: Conversation Context not active when method called on conversation Conversation with id: 1
at org.jboss.weld.context.conversation.ConversationImpl.verifyConversationContextActive(ConversationImpl.java:197)
at org.jboss.weld.context.conversation.ConversationImpl.getLastUsed(ConversationImpl.java:154)
at org.jboss.weld.context.AbstractConversationContext.isExpired(AbstractConversationContext.java:337)
at org.jboss.weld.context.AbstractConversationContext.invalidate(AbstractConversationContext.java:285)
at org.jboss.weld.jsf.WeldPhaseListener.deactivateConversations(WeldPhaseListener.java:146)
at org.jboss.weld.jsf.WeldPhaseListener.afterPhase(WeldPhaseListener.java:91)
at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:189)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:107)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
Estou usando o tomcat 7, a injeção com o CDI funciona normalmente, mas pelo que parece ao direcionar para a outra página, o contexto deixa existir.
Já vi várias coisas no google, mas não obtive sucesso em resolver este problema.