Boa noite. Tenho tentado sem sucesso passar o valor de uma Session ou Cookie entre subdomínios usando JSF.
Adicionando o Cookie no: dominio1.localhost:8080/Meuapp/paginas/...
Ao clicar em um dataGrid adiciono o cookie sou redirecionado para outro subdomínio.
Cookie ck = new Cookie("JSESSIONID", "Valor a Setar/Receber do Cookie");
ck.setMaxAge(-1);
String domainName = request.getServerName();
String domainNamePrefix = domainName.substring(domainName.indexOf("."), domainName.length()); //Returns .xyz.com
ck.setDomain(domainNamePrefix);
((HttpServletResponse) context.getExternalContext().getResponse()).addCookie(ck);
No método init() usando o @PostConstruct tento recuperar a informação e Gera uma nova Session . Aqui já é outro subdominio:
dominio2.localhost:8080/Meuapp/paginas/...
@PostConstruct
public void init() throws UnsupportedEncodingException {
Usuario usuarioLogin;
//usuario = usuarioLogado.getRetornausuarioLogado();
usuarioLogin = (Usuario) FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
.get("user");
HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
ExternalContext etx = facesContext.getExternalContext();
String mtr4 = "";
Cookie[] cookies4 = request.getCookies();
// System.out.println("Cookies 4= " + cookies4.length);
if (cookies4 != null) {
for(int i=0; i < cookies4.length; i++) {
System.out.println(" Nome "+cookies4[i].getName());
Cookie c4 = cookies4[i];
if (c4.getName().equalsIgnoreCase("JSESSIONID")) {
mtr4 = c4.getValue();
System.out.println(" Valor "+mtr4);
//aqui Imprime outra Session e não pega o valor do cookie
}
}
}
Inicialmente gostaria de pegar o usuário logado.
Desde já agradeço. Obrigado!