Configure WildFly/Undertow to put JSESSIONID on URL if cookies not accepted

jkmgbrt picture jkmgbrt · Dec 16, 2014 · Viewed 7.3k times · Source

We previously used JBoss 7.1.2 and utilized the behaviour that JSESSIONID is put on the URL as a fallback if cookies are not accepted or if the JSESSIONID cookie is not present in requests.

After migrating to WildFly 8.2.0 / Undertow 1.1.0 this URL rewrite is not happening.

Is it possible to configure WildFly/Undertow to put JSESSIONID on URLs as a fallback? We are aware of the possibility to put session-config in web.xml, e.g.:

<session-config>
  <tracking-mode>URL</tracking-mode>
</session-config>

But we only want JSESSIONID on URLs as a fallback solution.

Answer

Martin H&#246;ller picture Martin Höller · Mar 18, 2015

To use cookie based session-tracking if available and URL based session-tracking as a fallback you should configure your deployment descriptor web.xml like this:

<web-app ...>
  <session-config>
    <tracking-mode>COOKIE</tracking-mode>
    <tracking-mode>URL</tracking-mode>
  </session-config>
</web-app>

Note, that you need at least servlet 3.0 specification!

Unfortunately there is a bug (UNDERTOW-396) in Wildfly/Undertow that prevents the fallback from being used. That bug has been marked as fixed for Undertow 1.2.0-Beta10, but Wildfly 8.1.0.Final and 8.2.Final both use older versions. So currently you'd probably need to update Undertow in your Wildfly installation to get the fix.

Here is another useful blog-post on this topic.

Update: Wildfly 9.0.2.Final uses Undertow 1.2.9, so this should be working again (not yet tested).