Servidor REST acessando Backbean em sessão

Olá a todos, me deparei com uma dúvida ontem que fiquei sem solução, primeiro explicarei meu problema:

A JORNADA ATÉ O PROBLEMA
Estou utilizando JSF + Primefaces e fiquei surpreso com a quantidade de coisas que o primefaces me ajuda, a exemplo dos gráficos. Na aplicação que estou desenvolvendo temos MUITOS gráficos e alguns deles tem que ser atualizados em tempo de execução. Para a maioria dos gráficos isso é tranquilo o Primefaces ajuda, mas o PRINCIPAL gráfico é um gráfico de Gantt e esse o prime não possue, pra tanto preciso de outro framework.
Pesquisa na net encontrei o JFreeChart que é bem interessante mas pro meu caso é uma complicação, já que o gráfico será atualizado a cada item incluído (via ajax) ou excluído. O JFreeChart gera o gráfico como uma imagem (PNG, GIF, JPEG) e exibe na tela como stream. Imagina como seria, a medida que a pessoa adiciona um item ela precisa acompanhar essa mudança no gráfico e não pode ficar esperando baixar uma imagem sempre que fizer uma mudança.

Resolvi ir atrás de uma solução JQuery. Encontrei uma muito boa, mas eu fiquei sem saber como atualizar o meu gráfico JQuery com as informações que tenho me sessão no bean, foi quando eu vi que ele aceitava JSON, resolvi fazer um método dentro de meu bean que retornasse o objeto que está em sessão no formato JSON, para a página ler os dados e criar o gráfico.

O PROBLEMA
Quando eu tento usar o objeto em sessão, percebo que ele está vazio, foi quando percebi: apesar do método rest estar dentro do mesmo bean que utilizo na aplicação, eles não compartilham a mesma classe. É como se eu tivesse um bean que utilizo normalmente e quando a aplicação faz a solicitação REST, o servidor instanciasse outra classe bean com tudo vazio (como se nunca tivesse sido usada).

UMA PARTE DO BEAN

@ManagedBean
@SessionScoped
@Path("/termoAbertura")
public class TermoAberturaBean {
	private Projeto projeto = new Projeto();
	private Etapa etapa = new Etapa();
	private Restricao restricao = new Restricao();
	
	public List<Categoria> getAllCategorias(){
		List<Categoria> categorias = new ArrayList<Categoria>();
		categorias.add(Categoria.PEQUENO);
		categorias.add(Categoria.MEDIO);
		categorias.add(Categoria.GRANDE);
		
		return categorias;
	}
	
	public List<TipoRestricao> getAllTipoRestricao(){
		List<TipoRestricao> tipos = new ArrayList<TipoRestricao>();
		tipos.add(TipoRestricao.PREMISSA);
		tipos.add(TipoRestricao.RESTRICAO);
		
		return tipos;
	}
	
	@GET
	@Path("etapasGantt")
	@Produces("application/json")
	public List<Gantt> etapasGantt(){
		List<Gantt> lista = new ArrayList<Gantt>();
		
		Gantt gantt;
		gantt = new Gantt();
		gantt.setName(projeto.getNome());
		
		GanttValues values = new GanttValues();
		values.setLabel(projeto.getNome());
		values.setFrom(projeto.getInicioDesejado());
		values.setTo(projeto.getTerminoDesejado());
		
		gantt.addValues(values);
		
		lista.add(gantt);
		
		for (Etapa etapa : projeto.getEtapas()){
			gantt = new Gantt();
			gantt.setName(etapa.getDescricao());
			
			values = new GanttValues();
			values.setLabel(etapa.getDescricao());
			values.setFrom(etapa.getInicio());
			values.setTo(etapa.getTermino());
			
			gantt.addValues(values);
			
			lista.add(gantt);
		}
		
		return lista;
	}

EXPLICANDO O CÓDIGO
Esse objeto “projeto” já está populado no momento que a aplicação chama o método etapasGantt(), mas mesmo assim ela enxerga todos os objetos como se tivessem acabado de ser instanciado

COMO FAÇO PRA RESOLVER ESSE PROBLEMA?

Não cheguei a olhar seu código com muito detalhe, mas uma alternativa:

Nao é possível construir esse objeto “projeto” no cliente mesmo, e já mandar tudo como parâmetro para o seu serviço REST?

[quote=rodrigo.uchoa]Não cheguei a olhar seu código com muito detalhe, mas uma alternativa:

Nao é possível construir esse objeto “projeto” no cliente mesmo, e já mandar tudo como parâmetro para o seu serviço REST? [/quote]

Nunca trabalhei com javascript a este nível. Irei pesquisar a possibilidade disso e atualizo aqui assim que puder.

[quote=felipedantas89][quote=rodrigo.uchoa]Não cheguei a olhar seu código com muito detalhe, mas uma alternativa:

Nao é possível construir esse objeto “projeto” no cliente mesmo, e já mandar tudo como parâmetro para o seu serviço REST? [/quote]

Nunca trabalhei com javascript a este nível. Irei pesquisar a possibilidade disso e atualizo aqui assim que puder.[/quote]

Na verdade, se eu conseguir manipular o objeto “projeto” via javascript eu nem precisaria enviar o objeto, eu construiría o JSON e alimentaria o código do jQuery pra montar o relatório.
Mas volta ao problema, como manipular objetos que estão no bean via javascript?

Abraço

Joga o seu Json numa <h:inputHidden /> na sua pagina… esse inputHidden executa o metodo no bean que retorna o json…
E pelo jquery vc pega o json do input hidden… se eu entendi o seu problema direito… isso resolve!!