Bom,
Eu tenho um servlet que desenha mapas. Quando rodado usando o Tomcat no Windows, funciona perfeitamente. Quando usado no Linux, ele dava a seguinte mensagem: Could not Connect to X Server.
O servidor X está instalado na minha máquina, então descobri que por algum motivo o usuário tomcat estava sem permissão para usa-lo.
Pesquisando na internet, descobri o comando xhost. O mesmo permite que vc dê acesso a algum usuário usar o X Server ou até mesmo desabilitar a segurança dele.
Mesmo com o problema resolvido, continuei com a pulga atrás da orelha: O que aconteceria com meu servlet quando usasse um servidor sem o X Server.
Foi aí que descobri a propriedade headless. Alguns componentes gráficos do Java precisam de um Display. Outros só usam o display quando a propriedade java.awt.headless está setada para false (que é o padrão). No meu caso, só uso componentes que não exigem display (no meu caso, java.awt.Graphics e java.awt.Graphics2d)
A solução é executar o Tomcat com a opção -Djava.awt.headless=true
ou colocar um servlet na inicialização do servidor, executando o código System.setProperty("java.awt.headless","true')
O importante é esse código rodar antes de qualquer componente que use o Display ser executado.
Abs!