Gwt 2.0

Pessoal, estou pesquisando faz alguns dias e ainda não encontrei um material interessante sobre o assunto GWT + Sessions.
Estou querendo testar uma simples tela de login que fiz utilizando em GWT 2.0 + Hibernate e não estou conseguindo armazenar a sessão.
Alguém já passou por isso e tem alguma dica ou material de estudo?

Obrigado!

Encontrei algumas informações sobre sessões em gwt no site developerlife.com.
Não tenho como pesquisar qual a página mais especificamente, mas acho que navegando neste site você deve encontrar o artigo.

De qualquer forma, você pode obter uma referência para sessão de forma semelhante ao que faz em um servlet:

HttpSession session = getThreadLocalRequest().getSession();

A partir daí, o objeto pode ser manipulado como seria em um servlet.

Certo, neste caso seria melhor criar uma classe dentro do pacote server para a session?
Estou confuso com a jeito do GWT trabalhar isso, já consegui fazer a consulta com o Hibernate e validar o login.
Mas ainda não estou certo de ondo colocar o HttpSession session = getThreadLocalRequest().getSession();
Estou utilizando esta classe para obter a list de usuários…

[code]
package br.com.company.application.server;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpSession;

import net.sf.gilead.core.PersistentBeanManager;
import net.sf.gilead.core.hibernate.HibernateUtil;
import net.sf.gilead.core.store.stateless.StatelessProxyStore;
import net.sf.gilead.gwt.PersistentRemoteService;

import org.hibernate.Session;

import br.com.company.application.client.ApplicationService;
import br.com.company.application.model.Usuario;

public class ApplicationServiceImpl extends PersistentRemoteService implements ApplicationService {

private HibernateUtil gileadHibernateUtil = new HibernateUtil();

public ApplicationServiceImpl() {
	gileadHibernateUtil.setSessionFactory(br.com.company.application.util.HibernateUtil.getSessionFactory());
	PersistentBeanManager persistentBeanManager = new PersistentBeanManager();
	persistentBeanManager.setPersistenceUtil(gileadHibernateUtil);
	persistentBeanManager.setProxyStore(new StatelessProxyStore());
	setBeanManager(persistentBeanManager);
}

@Override
public List<Usuario> getUsuarios() {
	Session session = gileadHibernateUtil.getSessionFactory().getCurrentSession();
	session.beginTransaction();
	List<Usuario> usuarios = new ArrayList<Usuario>(session.createQuery("from Usuario").list());
	session.getTransaction().commit();
	return usuarios;
}

}[/code]

O que exatamente você quer fazer?
Quer implementar o controle de sessão dentro do serviço remoto?

Em um trabalho de faculdade recente efetuamos o controle de sessão setando um atributo da sessão, mais ou menos assim:

HttpSession session = getThreadLocalRequest().getSession();
session.setAttribute(ServerConstants.SESSION_ATTRIBUTE_NAME, sessionId);

No nosso caso, existia um controle de sessão desenvolvido por nós mesmos. O id deste controle de sessão era armazenado na sessão do gwt e, a cada invocação de método remoto, nós recuperávamos o id da sessão do gwt e validávamos o mesmo.

Para simplificar, você pode setar algum outro atributo (representando se o usuário está logado, por exemplo) e verificar o valor do mesmo a cada invocação de método remoto.