Pessoal,
Alguém sabe se o Vraptor facilita o compartilhamento de componentes entre módulos (aplicações com contextos diferentes)?
Crie um jar com esses componentes e adicione o package deles no web.xml:
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.meupacote.alguma.coisa</param-value>
</context-param>
é possível compartilhar a sessão. O usuário vai fazer um único login para acessar todos os módulos e nenhuma ferramenta de sso encaixou na arquitetura dos módulos.
os módulos são aplicações em contextos/servidores diferentes?
Isso chama-se SSO (single sign on). Você pode implementar um ou usar algumas soluções como o JBoss SSO.
Lucas,
Contextos diferentes.
se você usa um AS (tipo JBoss) você consegue colocar objetos disponíveis para todas as aplicações do mesmo servidor. Não lembro exatamente o que é, mas é algo como JNI ou JNDI (garcia-jj manja mais disso do que eu :P)
daí da parte do VRaptor, vc cria um componente (o usuário session scoped, por exemplo) que lê esse objeto do servidor, e loga o usuário automaticamente.
A sugestão do Lucas é boa, compartilhar dados na JDNI, porém você deve cuidar com o que você compartilha lá.
Você está pensando em compartilhar os dados do usuário entre as aplicações? Isso não é possível, pelo menos não assim expondo globalmente. Isso porque cada contexto está em um class-loader diferente. Se você tentar usar um objeto de outro contexto, senão me engano, você terá um java.lang.LinkageError.
O mais correto é você usar um SSO mesmo. Assim o usuário faz o login lá no SSO, e quando entrar em algum contexto, você faz a autenticação silenciosa dele naquele contexto baseado nos dados que vieram do SSO. É a forma mais correta e segura.
ok Lucas. garcia-jj alguma documentação sobre isso, não achei muita coisa relevante.