Atualizando a lista de Timezone da JVM

Olá pessoal vamos falar sobre como atualizar a lista de Timezone da JVM.

O Problema da Mudança de Timezone


Devido uma mudança realizada pelo governo brasileiro, este ano não teremos o horário de verão, que mudava o GMT para -2 em algumas regiões do Pais, com isso, as configurações de Timezone dos servidores são ajustados para não realizar a mudança, mas alguns ambientes onde temos JVM podem acabar mudando e não seguindo o Timezone do S.O, pois a regra antiga ainda encontra-se configurada.

Ambiente Java 10 mudou com Timezone incorreto.

Acima instanciamos um objeto Date() a partir do JShell e notamos a diferença no horário, onde o correto seria exibir 11:05:31.


Lista de Timezone Atualizados


Como aconteceu aqui no Brasil, podem acontecer mudanças de Timezone em qualquer lugar (mesmo não sendo comum), quando ocorrem essas mudanças temos que recorrer a listas de Timezone atualizadas para que os ambientes possam funcionar corretamente.

No caso da JVM, a Oracle mantém a lista de Timezone baseada na IANA.

Para corrigir o nosso problema iremos utilizar a seguinte URL: https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz, esta irá retornar a ultima lista atualizada de Timezones.

A Ferramenta TZUpdater


A Oracle disponibiliza uma ferramenta para atualizar a lista de Timezone chamada TZUpdater, esta é um arquivo jar que deve ser executado passando a lista de atualização como parâmetro.


Realizando a execução


Para executar o utilitário devemos executar o seguinte comando:

java -jar tzupdater.jar  -l https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz


Se tudo ocorrer corretamente o resultado será o seguinte:


Descritivo da execução do comando.

Obs: Vale lembrar que caso você tenha mais de uma JVM no ambiente, ao executar o comando java, a lista que será atualizada é a que for sua JAVA_HOME e estiver configurada em seu PATH, caso sua necessidade seja alterar de outras JVM, use o caminho absoluto, por exemplo: /opt/path_java/bin/java


Após a atualização vamos criar novamente um objeto Date:


Ambiente Java 10 com o Timezone correto.

Após a execução do tzupdater a lista foi alterada e o Timezone esta de acordo com as configurações Locais.

Referências


Nenhum comentário:

Postar um comentário