vRaptor Spring problema com tabelas temporárias

Olá

Tenho uns processos que faço no banco via functions onde crio tabelas temporárias, e preciso ter acesso as mesmas até o fim da sessão do usuário, mas, o spring me provê uma conexão diferente a cada transação e com isso perco o acesso as tabelas temporárias.

Alguém sabe me dizer como faço para que o spring use uma conexão distinta para a sessão do usuário?

Desde já agradeço qualquer ajuda!

Att.

Em geral isso não é uma boa idéia…

só faça isso se vc tiver poucos usuários, e lembre-se de dar um timeout pra sessão do Usuário…

vc tá criando sessions com o Spring mesmo? no applicationContext.xml?

Olá

A situação é a seguinte, estou desenvolvendo um sistema em java+spring+vraptor sobre um banco de dados(postgres) que está em uso por aplicação PHP e uma aplicação desktop feita em Delphi, e o banco possui functions e procedures que realizam tarefas quando a atualização em algumas tabelas e não gostaria de implementar isso na aplicação.

Também o banco possui triggers de log para cada tabela, onde é gravado no registro de log o id do usuário que fez a operação, esse id é setado pela aplicação no momento da conexão em uma tabela temporária, o problema é que parece que o spring fica alternando a conexão do usuário, e quando isso ocorre as triggers não enxergam a tabela temporária, monitorando os logs percebi que alguns registros tem o id do usuário outros não isso em interações com poucos segundos de intervalo.

Obrigado pela atenção.

o spring vai criar uma session por operação, o que não é necessariamente uma conexão por operação…

se vc configurar um pool de conexões, vc vai ter um numero limitado (tipo 10) que servirá a vários usuários.

se vc quiser muito que seja uma conexão por usuário, você pode configurar o connectionProvider do Hibernate para usar a mesma conexão por usuário, mas lembre-se de dar um timeout para a conexão, senão vc vai segurar recursos do banco à toa.

O ideal é não depender disso. Se for o suficiente ter uma conexão por requisição do usuário, configure o OpenSessionInViewFilter do Spring, que deve resolver o problema.

Voce ta criando e destruindo a tabela na camada Java?

Porque nao cria procedures de banco, pra cria e outra que destroi essas tabelas temporárias?
Ai vc define o momento que quer que elas sejam criadas, e o momento que quer que seja destruídas.
Com isso, independente da sessao ele vai conseguir acessar a tabela

Lucas, vou fazer um testar as configurações que vc sugeriu

Igor_ks, as tabelas são criadas pelas triggers do banco quando houver inserção ou atualização de algumas tabelas.

As tabelas são temporárias de sessão da conexão, quando a sessão espira o banco se encarrega de destruí-las.