@Inject x Objeto nullo

Salve Galera…
Estou com um problema pra usar uma instancia de um objeto com o @Inject

Crei uma classe bean que é instanciada em um evento de uma página JSF
E tenho um outro bean que vou precisar dessas informações.
Acredito que o a solução seria usar o @Inject

Minha classes estão assim:
Removi get/set para o exemplo:

import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import org.jboss.seam.annotations.Name;

@Name("gridDataModel")
public class GridDataModel<T> implements Serializable{

	private static final long serialVersionUID = 1L;
	public String ModelProperty;
	public Class<?> clazz;
	public List<String> colModels;
	public List<String> colNames;
	public List<T> listData;
	
	public GridDataModel() { }
	
	@PostConstruct
	public void Init() {
		setColModels(new ArrayList<String>());
		setColNames(new ArrayList<String>());
	}
	
}
import java.util.List;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;

import org.apache.commons.lang.StringUtils;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;

import com.example.datamodel.GridDataModel;
import com.powerlogic.jcompany.comuns.PlcArgVO;
import com.powerlogic.jcompany.comuns.PlcBaseContextVO;
import com.powerlogic.jcompany.comuns.PlcException;
import com.powerlogic.jcompany.comuns.PlcRuntimeException;
import com.powerlogic.jcompany.comuns.facade.IPlcFacade;
import com.powerlogic.jcompany.config.controle.colaboracao.PlcConfigGrupoControle;
import com.powerlogic.jcompany.config.controle.colaboracao.PlcConfigSelecao;
import com.powerlogic.jcompany.config.controle.colaboracao.PlcConfigArgumento.Operador;
import com.powerlogic.jcompany.config.dominio.PlcConfigGrupoAgregacao;
import com.powerlogic.jcompany.controle.rest.api.qualifiers.QPlcAtual;
import com.powerlogic.jcompany.controle.rest.api.qualifiers.QPlcControleNome;
import com.powerlogic.jcompany.controle.rest.api.qualifiers.QPlcControleQualificador;
import com.powerlogic.jcompany.controle.rest.api.qualifiers.QPlcDefault;
import com.powerlogic.jcompany.controle.rest.api.qualifiers.QPlcHttpParam;
import com.powerlogic.jcompany.controle.rest.api.stereotypes.SPlcControle;

/**
 * @param <T>
 */
@SPlcControle
@QPlcControleNome("grid")
@QPlcControleQualificador("*")
public class PlcBaseGridControle<T> extends PlcBaseDinamicoControle {

	@Inject
	protected HttpServletRequest request;
	@Inject @QPlcAtual
	protected PlcBaseContextVO context;
	@Inject @QPlcAtual
	protected PlcConfigGrupoAgregacao configuracao;
	@Inject @QPlcAtual
	protected PlcConfigGrupoControle configGrupoControle;

	@Inject @QPlcDefault
	protected IPlcFacade facade;

	@Inject @QPlcHttpParam("page") @QPlcDefault("1")
	protected Integer page;
	@Inject @QPlcHttpParam("rows") @QPlcDefault("10")
	protected Integer rows;
	@Inject @QPlcHttpParam("sidx")
	protected String orderBy;
	@Inject @QPlcHttpParam("sord")
	protected String order;
	@Inject @QPlcHttpParam("filters")
	protected String filters;
	
	@Inject
	protected GridDataModel<T> gridDataModel;
	
	private Integer total = null;
	
	@Consumes("application/json")
	@SuppressWarnings("unchecked")
	@Override
	public void recuperaColecao() {
		...
		// nesse ponto eu preciso de gridDataModel, mas o objeto esta nulo;
	}
}

no método recuperaColecao, com o debug eu vi que a propriedade gridDataModel esta nula.
O que eu posso esta fazendo de errado?

Obrigado

CDI, Guice, ??

Se for Guice, tu tem que dar bind no GridDataModel usando TypeLiteral.

Valeu Carrlos0…
é CDI…

Pelo que tenho notato é o tempo em que as chamadas estão acontecendo…
Olha só… no preRenderView da página eu chamo gridDataModel setando uma lista

<f:metadata>
    <f:event type="preRenderView" listener="#{gridDataModel.setListData(plcAction.listaEmpresas)}"/>
</f:metadata>

Isso é composite Componente pra montar um jquery Grid na página depois de renderizar a página eu chamo um request pra classe PlcBaseGridControle… acessando o método recuperaColecao.
Nesse ponto eu preciso da lista que eu criei com o preRenderView.

Pelo debug notei que é chamado o construtor da classe recuperaColecao depois do preRenderView.
Achei muito estranho isso… deve ser esse o problema.

Pessoal… descobri o problema, mas não tenho idéia de como resolver, ou se o problema é um comportamento padrão devido o @Inject.

O problema ocorre pq no momento que eu acesso o método recuperaColeção da classe, PlcBaseGridControle, ele intancia novamente o objeto da classe GridDataModel.

Eu imaginei que colocando essa classe (GridDataMode) como escopo de sessão, ele iria iniciar ela apenas uma vez.

Visto que a ordem que eu executo as classes estão assim.
no preRenderView eu chamo o método pra colocar uma lista neste objeto, e depois de carregar a página eu executo um request no método recuperaColecao.

Como eu faço pra ter a instância da classe GridDataModel, dentro da classe PlcBaseGridControle?

Obrigado