Horário de Verão e JBoss

Postado em Atualizado em

Brincadeiras a parte isso é uma das coisas que podem gerar alguns contratempos nos ambientes de produção. Alguns vão dizer que esse post é um pouco atrasado pois já estamos no fim de Abril e o horário já voltou ao normal, mas para futuras consultas vou deixar aqui algumas dicas de como deixar o seu ambiente JBoss preparado para o horário de verão. Por default o JBoss utiliza hora da JVM que por suas vez asssume os valores configurados no timezone do sistema operacional.

Então ai vai a primeira dica: Deixe o seu timezone configurado corretamente, sei que pode parecer uma coisa bem primária mas já observei alguns ambientes em que simplesmente essas configurações não estavam de acordo com os requisitos necessários. Para informações sobre essa configuração no CentOS consulte a documentação.

A segunda dica é uma ferramenta da Sun/Oracle que realiza um teste e verifica se o timezone precisa ser atualizado, essa ferramente se chama Timezone Updater Tool ( tzupdater ), o download pode ser realizado no link abaixo:

http://www.oracle.com/technetwork/java/javase/downloads/tzupdater-download-513681.html

Para utilizar o tzupdater  execute:

 java -jar tzupdater.jar -t

Serão listadas todas as divergências que podem ocasionar problemas.

Para atualizar execute:

 java -jar tzupdater.jar -u

Realize o teste novamente, e verifique se foi corrigido.

A terceira e ultima dica é uma classe que a Sun / Oracle disponibiliza e que testa se o Java fará as mudanças de horário corretamente. Essa classe pode ser visualizada abaixo:


/*
* Timezone test to check that the new US 2007 DST rules have been
* picked up by the JRE. TimeZone used is the default one on OS.
* Sample result :
* $java DSTTest "11/04/2007 0:00 AM"
* JRE version : 1.4.2_13
* Sun Nov 04 00:00:00 EDT 2007
* TimeZone tested : Eastern Daylight Time
* Your tested time is in daylight-savings time.
* $java DSTTest "11/04/2007 3:00 AM"
* JRE version : 1.4.2_13
* Sun Nov 04 03:00:00 EST 2007
* TimeZone tested : Eastern Standard Time
* Your tested time is not in daylight-savings time.
* $echo $TZ
* America/New_York
*
*/

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class DSTTest {
 private static final String DATE_FORMAT_PATTERN = "MM/dd/yyyy hh:mm a";

 public static void main(String[] args) {

 try {

   String ver = System.getProperty("java.version");
   String testDate = args[0]; // "11/04/2007 1:00 AM";

   SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT_PATTERN);
   Date currentDate = df.parse(testDate, new ParsePosition(0));
   System.out.println("JRE version : " + ver);
   System.out.println(currentDate);
   // Default timezone from the system is used.
   TimeZone tz = TimeZone.getDefault();
   // Could manually set the timezone above. e.g :
   //TimeZone tz = TimeZone.getTimeZone("America/New_York");
   System.out.println("TimeZone tested : " + tz.getDisplayName(tz.inDaylightTime(currentDate), TimeZone.LONG));
   boolean indaylight = tz.inDaylightTime(currentDate);
   System.out.println("Your tested time is " + (indaylight ? "in " : "not in ")  + "daylight-savings time.");
  } catch (Exception e) {
   System.out.println("Error encoutered. Please insure you supply a valid date format pattern.");
   System.out.println("Ensure you've quotes placed around the pattern!");
   System.out.println("e.g java DSTTest \"11/04/2007 1:00 AM\"");
  }
 }
}

Para testar compile e execute a classe passando os parâmetros abaixo:

java DSTTest "02/25/2012 10:59 PM"
java DSTTest "02/26/2012 00:01 AM"

Lembrando que o JBoss precisa ser reiniciado na mudança de horário de verão, para assumir as novas configurações.

Espero que ajude alguém🙂

Abraços

2 comentários em “Horário de Verão e JBoss

    Bruno Rossetto Machado disse:
    13 de fevereiro de 2014 às 16:49

    Post matador!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s