Problemas com formato da data no Tomcat [Resolvido]

Após quebrar a cabeça o dia inteiro estou postando aqui…

Tenho uma aplicação que funciona perfeitamente no Tomcat 6 e no Glassfish em uma máquina windows xp.

Coloquei minha aplicação numa máquina Linux Ubuntu com Tomcat 6 e começaram meus problemas com formato da data na hora do insert e update no banco.

O banco que estou utilizando é o Oracle 10g Express Edition (o banco continua sendo o mesmo)

Na máquina windows(console e aplicação) quando rodo Locale.getDefault() retorna pt_BR

Na máquina Linux(na aplicação web) Locale.getDefault() retorna en_US

Na máquina Linux (no console) Locale.getDefault() retorna pt_BR

Depois dessa saída acima comecei a achar que o proble é no Tomcat

Já tentei usar fazer isso e também não funcionou:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

A data até fica certa se eu pegar a String gerada e rodar no banco funciona, mas na aplicação não funciona.

Tem alguma forma de mudar isso no Tomcat?

Tive problema com campos timestamp no Oracle e Linux esta semana, mudei o tipo da coluna para Date.

A coluna já é do tipo Date

Você está usando JPA ou JDBC direto?

Estou usando JDBC

Passe o código que está dando problema e a exception.

Os setters de parâmetros do tipo data (setDate, setTimestamp, setTime) podem causar diversos problemas diferentes.

Esta semana quebrei a cabeça com isto… pode ser que eu tive o mesmo problema e possa te ajudar.

Dei uma revisada no código e achei o erro na String que estava sendo enviada para o banco.

Após um reboot da máquina o problema voltou, mas resolvi alterando script de inicialização do tomcat catalina.sh

// antes era assim
 JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" 

// Deixei assim
 JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Duser.country=BR -Duser.language=pt"

Problema resolvido.

Agradeço a ajuda!

1 curtida