Vejam só! Hoje tive a brilhante ideia de adicionar um campo em meu cadastro que atualiza a data que houve a atualização no registro e para minha surpresa a exibição dessa data apareceu com 3 horas de acréscimo, embora no banco de dados estivesse correto.

Pesquisando na Net descobri que isso não era tão absurdo assim pois várias posts relatavam problema semelhante.

Como resolvi:

Adicionei no arquivo web.xml o contexto ativando o recurso de timeZone correto.

<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>

Após a adição desta configuração a data e hora foram exibidas corretamente.

Exemplo de código JSF indicando o timeZone
<h:outputText value=”#{mBean.dataUltimaAlteracao}”>
<f:convertDateTime dateStyle=”long” pattern=”dd/MM/yyyy HH:mm” timeZone=”America/Recife”/>
</h:outputText>

Espero que seja útil e boa implementação a todos.