sexta-feira, 24 de novembro de 2023

Definir na JVM locale e timezone

Mais uma da série rápido e caceteiro

Após dev reclamar que o timezone e locale tavam batendo errados na apresentação da aplicação, fui dar uma olhada.

Em resumo. Dev não definiu na app seu timezone/locale e ficou 100% dependente do SO. No caso era pod rodando na "nuvem".


"Resolução" via infra:

Para chamada na hora de subir a JVM - definir atributos da jvm na execução

-Duser.language=pt -Duser.country=BR -Duser.timezone=America/Recife

Só substitua para seu timezone 


Resolução "certa" via devs:

Agora a parte divertida é fazer a aplicação definir valores padrão

Locale.setDefault(new Locale("pt", "BR")); 

TimeZone.setDefault(TimeZone.getTimeZone("America/Recife")); // pre java8
ou
ZoneId.setDefault(ZoneId.of("America/Recife")); // java8+


Dúvidas? Lança aqui nos comentário do post 

Ah... após questionamentos tenho mais uma:

-Dfile.encoding=UTF-8

System.setProperty("file.encoding", "UTF-8");


Pacotão para os preguiçosos:
-Duser.language=pt -Duser.country=BR -Duser.timezone=America/Recife -Dfile.encoding=UTF-8

Se pegar uma imagem s2i java (redhat/openshift) só definir
JAVA_OPTS=-Duser.language=pt -Duser.country=BR -Duser.timezone=America/Recife -Dfile.encoding=UTF-8

Nenhum comentário:

Postar um comentário

Dúvidas ou sugestões? Envie seu comentário.