Olá, pessoal.
Tenho uma implantação do Adempiere na organização onde trabalho, operando há cerca de um ano. Apesar de funcionalmente o sistema nos atender, sempre observamos uma certa lentidão na execução do aplicativo, a cada tentativa de abrir uma janela entre clicar na entrada no menu e a janela correspondente abrir havia um atraso entre 30 a 60 segundos. Isso dificultava tanto a utilização por parte do usuário como a execução de customizações via Dicionário de Aplicação. Como temos alguns problemas de lentidão na rede que limitam o desempenho, acreditávamos que o problema se devia a isso.
Como o problema se agravou recentemente, resolvi investigar e descobri que ele só se manifestava se utilizasse através de WebStart. Habilitando o trace, observei que ele tentava localizar um arquivo de nome “Adempiere1.jar”, que não existe no servidor. Observando o build.xml que o RUN_silentsetup.sh utiliza, encontrei a raiz do problema.
Para gerar o arquivo ADempiere.jar o script cria um arquivo chamado Adempiere1.jar, resultado da união dos seguintes JARs: customization.jar, packages.jar, patches.jar, posterita.jar e AdempiereOriginal.jar (o Adempiere.jar, renomeado durante o processo de build). O problema está nessa linha:
Como ele gera o arquivo com o nome de Adempiere1.jar (em outro ponto ele é renomeado para Adempiere.jar) e essa opção em vermelho gera um arquivo INDEX.LIST na pasta META-INF dentro do Jar, o índice gerado referencia o Adempiere1.jar. A função desse índice é acelerar o carregamento de classes, porém nesse caso gerou o efeito exatamente oposto, pois o WebStart ficava tentando buscar o tal arquivo por vários segundos antes de desistir e continuar com a execução normal. A impressão que tive foi de que uma ideia inocente de trazer ganhos de desempenho acabou tendo o efeito oposto por não haver um conhecimento mais amplo da função de indexação de JARs. Pra quem quiser entender melhor a função do INDEX.LIST e sua (des)necessidade: javahowto.blogspot.com.br/2006/0 … index.html
Após alterar a opção para “no” (e a remoção de algumas linhas desnecessárias por conta da mudança) e rodar novamente o RUN_silentsetup.sh o desempenho da aplicação aumentou significativamente, eliminando essas lentidões que dificultavam a utilização do sistema.
Como posso contribuir com essa alteração?
Atenciosamente,
Diego