Melhorias no Deploy do CRM Web

Configuração do Spring Framework

Atualização de dependências gerenciadas pelo Maven

  • Atualizado os plugins de compilação do Maven para a última versão disponível.

  • Atualizado o Lombok para a versão 1.18.20.

  • As dependências Java EE com escopo "compile" foram removidas pois já são providenciadas pelo próprio GlassFish, atualmente o projeto importa o Java EE 7 Web Profile com escopo "provided". Dependências removidas: servlet-api (javax.servlet), jsf-api/jsf-impl (com.sun.faces), javax.ws.rs-api (javax.ws.rs).

  • Atualizado a dependência commons-lang3 para a versão 3.8.1.

  • Removido spring-property-annotations (com.urbanmania).

  • Removido sprockets (net.sf.sprockets), foi necessário alterar o import "net.sf.json.JSONObject" para "import com.google.gson.JsonObject" na classe PushNotificationHelper.

  • Removido xstream (com.thoughtworks.xstream).

  • Removido jsoup (org.jsoup).

  • Removido commons-collections (commons-collections).

  • Removido querydsl-jpa (com.mysema.querydsl).

  • Removido querydsl-core (com.querydsl).

  • Removido jackson-jaxrs (org.codehaus.jackson).

  • Removido joda-time (joda-time).

  • Removido jira-client (net.rcarz).

  • Removido reflections (org.reflections).

  • Removido jackson-core (com.fasterxml.jackson.core).

  • O tamanho do .war reduziu cerca de 10 MB após remover as dependências descritas acima, auxiliando no tempo de build da aplicação.

Configuração de Logs

  • Criado o arquivo de configuração do Log4J no diretório META-INF/log4j.properties e realizado integração com Spring e Hibernate.

    • Com este arquivo no classpath, temos acesso aos logs detalhados do Spring (INFO, DEBUG, TRACE etc): https://docs.spring.io/spring-framework/docs/4.2.8.RELEASE/spring-framework-reference/htmlsingle/#overview-logging-log4j

      # Logs gerais da aplicação log4j.rootCategory=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n # Log da inicialização de beans do Spring log4j.category.org.springframework.beans.factory=INFO # Log da inicialização do Hibernate log4j.logger.org.hibernate=INFO # Log de consultas SQL #log4j.logger.org.hibernate.SQL=DEBUG #log4j.logger.org.hibernate.type.descriptor.sql=TRACE

     

  • Tempo de deploy

    Após as mudanças, notou-se que o tempo médio de deploy ficou entre 45 segundos a 1 minuto em ambiente de produção.

  • Em ambiente de desenvolvimento, é possível realizar as seguintes configurações adicionais:

    • Alterar a configuração load-on-startup dos servlets para -1 no web.xml para não inicializar automaticamente durante o deploy.

    • Desabilitar a verificação de classes na JVM do GlassFish através das flags:
      -Xverify:none, -XX:TieredStopAtLevel=1.

    • Realizar o undeploy do Cotação Web no GlassFish para que não seja inicializado em ambiente de desenvolvimento.

    • Adicionar a configuração default-lazy-init="true" no topo da configuração de beans do Spring no arquivo applicationContext.xml e mobile-ws-servlet.xml para que não inicialize todos os beans durante o startup do Spring.