Adicionei ao meu Bean, a anotação @PostConstruct para exibir uma mensagem sempre que for criado.
@Named // import javax.inject.Named;
@ViewScoped // import javax.faces.view.ViewScoped;
public class BrandBean implements Serializable {
private static final long serialVersionUID = 9204486797916777869L;
@Inject
private BrandService brandService;
@PostConstruct
public void init() {
System.out.println("Creating BrandBean");
}
}
Porém, ao abrir a página, ele cria o Bean duas vezes. Ao ordenar os elementos do datatable, o Bean é criado 11 vezes. Ao editar um campo, é criado mais algumas vezes. Ou seja, ele não está guardando meu escopo corretamente, é como se o @ViewScoped não estivesse ali.
Quando altero para @ApplicationScoped
, está tudo funcionando em ordem, ou seja, o CDI está configurado corretamente. Porém, não está no contexto que eu gostaria que estivesse: RequestScoped
é muito pouco, e @ApplicationScoped
é muito.
Meu beans.xml foi criado pelo próprio Red Hat Studio, durante a configuração.
<?xml version="1.0"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.2" bean-discovery-mode="all" />
Estou utilizando as seguintes configurações: javaee-api = 7.0 javax.faces-api = 2.2 (provided) cdi-api = 1.2 (provided) weld-servlet = 2.3.5 (provided) Jboss EAP 6.3 Java 7
Tenho também o problema da configuração do namespace do JSF 2.2, mas não consigo identificar se é problema de incompatibilidade de versão ou outra configuração que tenho que realizar.
Eu preciso de um auxílio para entender como começar a verificar estes erros, visto que tirando os novos namespaces e o @ViewScoped, o projeto funciona corretamente.
Obrigado deste já!