Ajuda no conceito do session scoped

Olá, estou fazendo um aplicação java web que mantenha o usuário dentro da sessão.

O usuário eu chamo de cliente e tenho um Model para guardar ele:

@SessionScoped
public class ClienteModel extends AbstractController {

	/**
 * 
 */
private static final long serialVersionUID = -6462175656474438867L;

private Cliente cliente;


public Cliente getCliente() {
	return cliente;
}


public void setCliente(Cliente cliente) {
	this.cliente = cliente;
}

}

Eu seto o cliente a partir deu um controller, e pelo sistema pegaria o usuario através desse modo:

@Named
@ViewScoped
public class RestauranteController extends AbstractController {`

private static final long serialVersionUID = -8520499726686174261L;

/**
 * 
 */

@Inject
private ClienteModel clienteModel;

private Cliente clienteSelecao;

@PostConstruct
public void init() {
	this.clienteSelecao = clienteModel.getCliente();
}
}

Porém ao injetar o meu clienteModel ele cria uma nova instância, como o escopo do cliente model é sessionscoped não deveria permanecer a mesma instância até a sessão terminar?
Talvez eu tenha entendido errado o conceito do sessionscoped ou estou fazendo alguma coisa errada, qm puder me explicar o q estou fazendo de errado ficarei muito grato!

Coloca no seu código os imports que está usando. Talvez tenha importado o @SessionScoped do pacote errado.

Lucas, para a minha classe do model só tenho apenas o import do Session scoped:

import javax.faces.bean.SessionScoped;

Para o meu controller tenho todos esses importes:

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.event.ActionEvent;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.context.RequestContext;

import br.com.recomendador.business.IAvaliacaoBusiness;
import br.com.recomendador.business.IClienteBusiness;
import br.com.recomendador.business.IRestauranteBusiness;
import br.com.recomendador.entity.Avaliacao;
import br.com.recomendador.entity.Cliente;
import br.com.recomendador.entity.Restaurante;
import br.com.recomendador.exception.SystemException;
import br.com.recomendador.main.GerarRecomendacao;

Como está essa classe AbstractController? ClienteModel realmente deveria herdar dessa classe?

Não tinha necessidade mesmo, eu já tinha tirado essa herança ontem. Mas segue a classe:

package br.com.recomendador.controller;

import java.io.IOException;
import java.io.Serializable;
import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import br.com.recomendador.exception.SystemException;

public abstract  class AbstractController implements Serializable{

	

	/**
	 * 
	 */
	private static final long serialVersionUID = 6920627634033726418L;

	protected FacesContext getFacesContext() {
		return FacesContext.getCurrentInstance();
	}
	
	protected HttpSession getHttpSession(final boolean create) {
		return (HttpSession) getFacesContext().getExternalContext().getSession(create);
	}
	
	protected Object getSessionAttribute(final String attributeName) {
		return this.getHttpSession(true).getAttribute(attributeName);
	}
	
	protected void setSessionAttribute(final String attributeName, final Serializable attributeValue) {
		this.getHttpSession(true).setAttribute(attributeName, attributeValue);
	}
	
	protected void limparSessionAttribute(final String attributeName) {
		this.getHttpSession(true).removeAttribute(attributeName);
		
	}
	
	public void renderizarTela() {
		String contextParameter = getParameterFromExternalContext("context") + ".xhtml";
		
		try {
			this.redirect(contextParameter);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void redirect(String pagina) throws SystemException {
		try {
			getExternalContext().redirect(getExternalContext().getRequestContextPath() + pagina);
		} catch (IOException e) {
			throw new SystemException("Erro ao realizar o redirect", e);
		}
		
	}

	private String getParameterFromExternalContext(String contexto) {
		ExternalContext ec = getExternalContext();
		Map<String, String> params = ec.getRequestParameterMap();
		String parameter = "/" +  params.get(contexto);
		return parameter;
	}

	private ExternalContext getExternalContext() {
		return getFacesContext().getExternalContext();
	}
	
	protected void mensagemErro(String mensagem) {
		FacesContext context = FacesContext.getCurrentInstance();
		
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", mensagem));
		
	}
	

}