Iniciando meu aplicativo java com
strace -tt -o strace.out <java command>
Mostrou que estava sendo enviado um comando SIGHUP que estava matando. Acontece que, embora eu estivesse definindo o processo para ser executado em segundo plano (anexando &
ao comando), o comando ainda está vinculado ao thread que o criou.
Isso significava que, para os comandos executados pelo apache, eles seriam eliminados sempre que o encadeamento de trabalho que os criava fosse reciclado e, para comandos executados manualmente, eles eram eliminados sempre que eu efetuava o logout.
Eu solucionei isso simplesmente prefixando nohup
no comando, ou seja,
nohup java -jar /path/to/my/java.jar arguments &