It appears that the issue is related to a valid session being available. The two URLs actually slightly different code paths. Going to the /auction/ context actually requests auction/index.jsp which redirects to auction/auction.jsf. This initial request appears to ensure that a session has been created.
Going directly to auction/auction.jsf appears to do session creation more lazily and is not available when the WindowScopeManager.lookup method needs it. Enforcing session creation in this method seems to fix the problem:
public synchronized static WindowScopeManager lookup(FacesContext context)
{
ExternalContext externalContext = context.getExternalContext();
//ICE-5281: We require that a session be available at this point and it may not have
// been created otherwise.
Object session = externalContext.getSession(true);
Map sessionMap = externalContext.getSessionMap();
ExternalContextConfiguration configuration = new ExternalContextConfiguration("org.icefaces", externalContext);
return lookup(sessionMap, configuration);
}
The side effect is tha,t since JSF 2.0 encodes all the URLs with jsessionid in case cookies are not supported, the first push update does a fairly major update to the page which causes some flicker.
It appears that the issue is related to a valid session being available. The two URLs actually slightly different code paths. Going to the /auction/ context actually requests auction/index.jsp which redirects to auction/auction.jsf. This initial request appears to ensure that a session has been created.
Going directly to auction/auction.jsf appears to do session creation more lazily and is not available when the WindowScopeManager.lookup method needs it. Enforcing session creation in this method seems to fix the problem:
public synchronized static WindowScopeManager lookup(FacesContext context)
{ ExternalContext externalContext = context.getExternalContext(); //ICE-5281: We require that a session be available at this point and it may not have // been created otherwise. Object session = externalContext.getSession(true); Map sessionMap = externalContext.getSessionMap(); ExternalContextConfiguration configuration = new ExternalContextConfiguration("org.icefaces", externalContext); return lookup(sessionMap, configuration); }The side effect is tha,t since JSF 2.0 encodes all the URLs with jsessionid in case cookies are not supported, the first push update does a fairly major update to the page which causes some flicker.