Alterações no BD não refletem visualmente na tela

Bom dia,
Dou suporte a uma aplicação web desenvolvida em Java, mas que possui uma tecnologia bem ultrapassada. Notei faz pouco tempo, que as funcionalidades que fazem alguma alteração no BD (ex. Inclusão de Conta Contábil) não reflete visualmente na aplicação, só conseguindo que essa informação fique visível após dar um restart nos servidores JBOSS e APACHE.
Essa informação deveria aparecer numa lista que é carregada na tela principal da aplicação, e mesmo estando correto no BD, ela não aparece para o usuário nessa lista, somente quando dou esse restart ou as vezes quando dou alguns “refreshs” dentro dessa aplicação.

Preciso solucionar esse problema, tendo em vista que o usuário não consegue ser independente dentro da aplicação por esse motivo. Preciso de uma ajuda.
Tecnologias Utilizadas:
Hibernate
Tapestry

Bom dia Paulo,

Provavelmente seja apenas o caso de atualizar first-level (session) cache.
Exemplo: session.flush();

Se possível depois veja o link abaixo, ele ilustra bem como o hibernate funciona.

Opa Robinson, bom dia,

Mas não é estranho esse problema não se reproduzir nas versões de desenvolvimento?

Fala Paulo,

Realmente é estranho, mas já passei por problemas semelhantes.

Infelizmente a mesma “infra” de desenvolvimento NUNCA é a mesma de produção. Na teoria o ambiente de desenvolvimento deveria ser “semelhante” ao de produção(libs, jar…etc) mas nem sempre ocorre.

Em uma empresa onde trabalhei, tinha ambiente Desenv, Homol, Prod, todos diferentes entre si, e ocorria alguns problemas em um deles, e em outro não, muitas vezes por versão de bibliotecas.

Mas o seu caso, aparentemente é simples, tenta debugar e chamar o método flush na mão!

Boa sorte!!!

Fala Robinson,

Cara, olhei aqui e todos os facades dentro da aplicação possuem o metodo flush. Tentei colocar o metodo clear para limpar a memória e obriga-lo a fazer o select novamente, mas ainda sim não deu certo, qualquer alteração não é atualizada visualmente, desde que eu faça o restart.

Eu agora faço testes na minha máquina apontando para o ambiente de QA, já que em desenvolvimento não tenho esse tipo de problema, estou com a impressão que não seja erro dentro da aplicação e nem no código, se não o correto seria conseguir simular o mesmo erro em desenvolvimento.

Valeu

você já conferiu se o datasource do jboss não está com cache de segundo nível habilitado?

Isso no servidor ou no eclipse?

Consegue me ajudar a chegar nisso ai? hehehe

o datasource fica em JBOSS_HOME/standalone/configuration/standalone.xml nas versões mais recentes do jboss e em arquivos xml separados nas versões mais antigas.

Se a funcionalidade de leitura e atualização são sistemas diferentes, ou seja, usam diferentes contextos de persistência, então acredito que esse é o comportamento esperado de um ORM. Basicamente, cada entity manager gerencia seu próprio conjunto de entidades em memória. Neste caso, a alteração reflete para o usuário que fez a atualização, mas outros contextos de persistência que estão ativos não tem como serem notificados, seu sistema não é distribuído.

Tente desabilitar o cache, apesar que isso pode resultar em outros problemas…

Eu não encontrei esse arquivo xml

Como faço pra desabilitar esse cache? é local ou no servidor?

Minha dúvida agora é como desabilitar esse cache no servidor. Eu até tinha pensado na possibilidade de ser cache ou do jboss ou do hibernate.