Olá pessoal, bom dia!
Tenho diversas aplicações em produção (em torno de 15) que estão rodando em meu Tomcat. Contudo, temos um padrão arquitetural, de modo que todas as aplicações possuem vários jar idênticos, sendo cerca de 15mb de jars idênticos replicados entre as aplicações.
Além do consumo desnecessário de espaço no servidor, também estamos tendo problemas de estouro de Permgen. Monitorando o comportamento do Tomcat a cada deploy, identificamos que o pergmen aumenta consideravelmente a cada nova aplicação com os 15mb de libs, de modo que vimos que elas são as vilãs desse problema.
Assim, a solução que pensamos em adotar foi colocar os jars comuns a todas as aplicações dentro de TOMCAT_HOME/commons/lib. Contudo, começamos a identificar um sério problema: há alguns componentes, tanto externos quanto internos, que trabalham com base em reflexão e criação de proxys dinâmicos. Quando esses componentes estão em commons/lib, eles não conseguem enxergar as classes que estão dentro das aplicações, e por isso se comportam de modo inesperado!
Alguém teria alguma dica de como eu poderia solucionar esse problema? Estou pensando em tentar colocar a pasta WEB-INF/classes de cada aplicação no classpath do sistema operacional, mas não sei se será uma solução viável, e me parece um pouco porca.
Obrigado.