Filhão, se vc está usando o BoneCPConnectionHandler com o ConnectionFilter do Mentawai isso tudo já foi resolvido pra vc. Como vc está fazendo isso na mão, o que não recomendo pois esse problema já foi resolvido pelo framework, então vou te explicar.
O ConnectionHandler possui um método destroy que precisa ser chamado quando a aplicação sofre um redeploy ou quando ela é terminada para limpar as coisas direitinho.
Logo o BoneCPConnectionHandler implementa esse método destroy, que limpa e fecha o BoneCP.
Daí é o ConnectionFilter que chama esse carinha quando a aplicação está terminando.
Olha o código linkado acima para entender a coisa. Veja que o Controlador do Mentawai, que é um servlet, possui o método destroy(), que é chamado pelo web container quando a coisa está sendo restartada ou terminada. Daí esse cara chama o destroy de todos os filtros, inclusive do ConnectionFilter que por sua vez chama o destroy do BoneCPConnectionHandler.
Se usa o Mentawai de forma high-level, vc não tem que se preocupar com isso. Isso é feito pra vc. Se usar um outro framework qualquer que não seja FULL-STACK, então vc vai ter que perder um dia entendendo e fazendo isso funcionar.
Sei que no seu caso vc não está usando o Mentawai puro, então vai ter que quebrar a cabeça para entender como essas coisas conversam e se integram entre si. Espero ter te ajudado. Qualquer coisa pergunte mais.