I'm (still) trying to migrate an application from JBoss 7,.2.0.Final to WildFly 8.2.0.Final, and I find that some cookies are not written to the servlet response. I've tracked it down to io.undertow.servlet.spec.HttpServletResponseImpl.addCookie().
@Override public void addCookie(final Cookie cookie) { if (insideInclude) { return; } final ServletCookieAdaptor servletCookieAdaptor = new ServletCookieAdaptor(cookie); if (cookie.getVersion() == 0) { servletCookieAdaptor.setVersion(servletContext.getDeployment().getDeploymentInfo().getDefaultCookieVersion()); } exchange.setResponseCookie(servletCookieAdaptor); }
Apparently the insideCookie flag has been set to true at the point we're calling HttpServletResponse.addCookie(), so WildFly/Undertow just quietly throws it away and leaves me scratching my head trying to figure out what went wrong.
When I search back up the call stack I see that our servlet is including a JSP page in its response like this
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(page); dispatcher.include(state.getRequest(), state.getResponse());
So, it makes sense that insideInclude is true, since the code that's trying to set the cookie is being called from inside RequestDispatcher.include(), but I don't understand why WildFly/Undertow just arbitrarily throws it away.
Please post this question in the undertow-dev mailing list undertow-dev Info Page where Stuart actively responds.