ViewExpiredException su una webapp servita da WildFly solo in un browser specifico

Ho un’applicazione jsf in esecuzione su Wildfly 8.1.0Final e, SOLO su Google Chrome, quando faccio clic sul pulsante Accedi, ricevo ViewExpiredException, in altri browser o in Chrome in modalità di navigazione in incognito, funziona perfettamente!

Qualcuno sa cosa potrebbe essere?

20:29:18,531 INFO [stdout] (default task-49) 2014-09-16 20:29:18 ERROR context:218 - javax.faces.application.ViewExpiredException: viewId:/login.jsf - A exibição de /login.jsf não pôde ser restaurada. 20:29:18,532 INFO [stdout] (default task-49) at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:210) 20:29:18,532 INFO [stdout] (default task-49) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 20:29:18,532 INFO [stdout] (default task-49) at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121) 20:29:18,532 INFO [stdout] (default task-49) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 20:29:18,532 INFO [stdout] (default task-49) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 20:29:18,532 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 20:29:18,533 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) 20:29:18,533 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 20:29:18,533 INFO [stdout] (default task-49) at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 20:29:18,533 INFO [stdout] (default task-49) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 20:29:18,533 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) 20:29:18,533 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) 20:29:18,533 INFO [stdout] (default task-49) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 20:29:18,534 INFO [stdout] (default task-49) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) 20:29:18,534 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) 20:29:18,534 INFO [stdout] (default task-49) at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) 20:29:18,534 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) 20:29:18,534 INFO [stdout] (default task-49) at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) 20:29:18,534 INFO [stdout] (default task-49) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 20:29:18,534 INFO [stdout] (default task-49) at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 20:29:18,535 INFO [stdout] (default task-49) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 20:29:18,535 INFO [stdout] (default task-49) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 20:29:18,535 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) 20:29:18,535 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) 20:29:18,536 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) 20:29:18,536 INFO [stdout] (default task-49) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) 20:29:18,536 INFO [stdout] (default task-49) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) 20:29:18,536 INFO [stdout] (default task-49) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) 20:29:18,536 INFO [stdout] (default task-49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 20:29:18,536 INFO [stdout] (default task-49) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 20:29:18,536 INFO [stdout] (default task-49) at java.lang.Thread.run(Unknown Source) 20:29:18,536 INFO [stdout] (default task-49) 

Il mio pom.xml:

   4.0.0 com.inbit ProjetoBase war 0.0.1-SNAPSHOT ProjetoBase  UTF-8 6.1.4     javax.annotation jsr250-api 1.0 provided   javax.faces javax.faces-api 2.2 provided   org.jboss.spec jboss-javaee-6.0 3.0.2.Final pom import      org.hibernate.javax.persistence hibernate-jpa-2.0-api provided   javax.enterprise cdi-api provided   javax.annotation jsr250-api provided   org.jboss.spec.javax.ejb jboss-ejb-api_3.1_spec provided   javax.faces javax.faces-api provided   org.jboss.spec.javax.servlet jboss-servlet-api_3.0_spec provided   org.hibernate hibernate-validator 4.0.0.GA compile   org.hibernate hibernate-entitymanager 4.3.6.Final    hsqldb hsqldb 1.8.0.10   postgresql postgresql 9.1-901-1.jdbc4   org.primefaces primefaces 5.0   junit junit 4.6   org.mockito mockito-all 1.9.5   log4j log4j 1.2.17   org.glassfish.web el-impl 2.2   org.slf4j slf4j-log4j12 1.5.6      repository.jboss.org JBoss Repository http://repository.jboss.org/nexus/content/groups/public-jboss/   prime-repo PrimeFaces Maven Repository http://repository.primefaces.org default    ProjetoBase    org.apache.maven.plugins maven-eclipse-plugin 2.8  2.0 true true     org.mortbay.jetty maven-jetty-plugin 6.1.25  3     maven-compiler-plugin 3.0  1.7 1.7     

E la mia pagina di accesso:

     

ProjetoBase

Realizando login...

Qualcuno potrebbe aiutarmi?

Grazie per qualsiasi aiuto!

WildFly nella sua attuale versione 8.1 ha problemi con i cookie (di sessione), in particolare quelli provenienti da server “sconosciuti”. Probabilmente già sai che i cookie sono specifici del dominio e vengono sempre inviati al server dal browser. Se hai già utilizzato lo stesso browser sullo stesso dominio che è servito da un server diverso (ad es. Tomcat, JBoss, GlassFish, ecc.) E il cookie in questione è il cookie JSESSIONID , WildFly non sarà in grado di creare correttamente la sessione HTTP.

Funzionerà se si eliminano tutti i cookie specifici del dominio ( localhost ) prima di aprire la webapp. Oppure, come hai giustamente osservato, se apri una finestra di navigazione in incognito (che inizia fondamentalmente con uno stato nitido e pulito), o quando i cookie sono già scaduti da tempo (quegli altri browser sono usati molto raramente, giusto?). Come soluzione temporanea, senza doverti gironzolare nell’archivio dei cookie del browser, potresti anche creare un filtro servlet che controlla i cookie di richiesta duplicati e li cestina.

A proposito, WildFly ha un altro problema con i cookie di sessione. Quando crea il cookie di sessione per la prima volta, non utilizza il percorso / , ma una stringa vuota come percorso (che fondamentalmente si traduce nella cartella corrente anziché nella cartella principale). Ciò ha come conseguenza che quando si visita la webapp per la prima volta richiedendo un percorso di cartella, le cartelle padre / root non condivideranno la stessa sessione. Questa parte è a sua volta risolvibile con le seguenti impostazioni in web.xml :

   /   

Guarda anche:

  • Esperienze che migrano JBoss AS 7 in WildFly 8