Starting from Servlet 3 and later we can set the session tracking mode explicitly by using ServletContext#setSessionTrackingModes(..)
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.SessionTrackingMode;
import javax.servlet.annotation.WebListener;
import java.util.EnumSet;
@WebListener
public class SessionTrackingModeSetter implements ServletContextListener {
@Override
public void contextInitialized (ServletContextEvent event) {
System.out.println("--------\ncontext initialized\n------\n " + this);
System.out.println("The default session tracking modes: " +
event.getServletContext()
.getDefaultSessionTrackingModes());
event.getServletContext()
.setSessionTrackingModes(EnumSet.of(SessionTrackingMode.URL));
}
@Override
public void contextDestroyed (ServletContextEvent sce) {
}
}
Original Post