HORÁRIO DE VERÃO - TIMEZONE NO JAVA

Horário de verão no Brasil é sempre um problema, porque ele não segue de jeito nenhum a regra mundial. É uma peculiaridade brasileira que causa grandes problemas mesmo para os Administradores de Sistemas[bb] que tem que ficar fazendo milagre em relação aos Arquitetos de aplicação[bb] que nunca levam em consideração esta questão.

Hoje comecei com um bruta problema o dia. Várias aplicações Java [bb]( sim, elas ) começaram a ter problemas com o Timezone do servidor aonde estavam hospedados.

 

JAVA

 

Vamos entender. No caso de linguagens compiladas, desde que o Sistema Operacional esteja com o TIMEZONE certo. No caso do Java[bb] temos uma JVM no meio, ou seja, um interpretador.
Como a Sun é meio psicótica, ela colocou um Timezone padrão para a sua JVM fugindo da do TImezone do Sistema Operacional. Juntando a isto tudo, que o nosso horário de verão não é padrão, como o do resto do mundo, a zona está pronta.

Pelo menos nos nossos Tomcats[bb] aqui, eu resolvi do seguinte modo. Na variavel de shell JAVA_OPTS colocamos o seguinte adendo :

-Duser.timezone=GMT-3

Onde GMT-3 tem que ser o timezone que você vai usar na sua aplicação.

export JAVA_OPTS="-server -Xms512m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=196m -Dcom.sun.management.jmxremote.port=3334 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Duser.timezone=GMT-3"

Ou seja .... com este horário de verão maluco, cada hora temos que descobrir uma coisa nova para fazer em nossos SOs ... no fim, acho que é por isto que os SysAdmins brasileiros acabam sendo bons de serviço ... o governo já começa todo final do ano nos deixando doidos ...