A solução está, na verdade, no código de suas páginas da Web e não em qualquer configuração que você possa fazer. Supondo que você esteja usando o JSP para gerar seu HTML, é necessário alterar links como este:
<a href="/home">a link to the root of my webapp</a>
Para ficar assim:
<a href="<%= response.encodeURL(request.getContextPath() + "/home") %>">
a link to the root of my webapp
</a>
O request.getContextPath é a verdadeira mágica aqui: ele sempre retorna o prefixo que pertence à sua aplicação web, não importa o que seja. Para o webapp ROOT, ele retornará "" (string vazia). Por outro lado, pode retornar "/ foo / bar" (se seu webapp foi implementado como foo # bar.war).
O response.encodeURL adicionará o identificador de sessão ao seu URL se o cliente não estiver usando cookies para que as sessões funcionem quando os cookies não estiverem disponíveis.
Se você estiver usando alguma outra estrutura de geração de conteúdo (Velocity, Freemarker, etc.), existem maneiras análogas de alcançar a mesma coisa fornecidas por essas estruturas.