Erro java em rede

3 respostas
G

Bom pessoal, estou com um problema q confesso ser muito estranho. Criei minha aplicação em java, usando Hibernate e MySQL, até ai tranquilo. Ele executa, faiz tudo q tenq faze, tudo certo. O problema esta quando eu coloco a aplicação na rede. Basicamente, eu estou colocando o BD em um servidor/pc, esse servidor/pc está rodando uma aplicação dele e outro pc esta rodando a sua aplicação, porém, esse outro pc esta o utilizando o BD do servidor/pc. Ambos entram no sistema, tranquilo, fazem seus cadastros suas alterações, tudo belezinha. O problema eh q, quando um pc (seja ele o servidor ou o outro), faz um cadastro ou uma alteração, o outro pc não ve esse cadastro ou alteração, a menos q ele feche e abra de novo a aplicação. Bom, seguindo alguns topicos do guj, já tentei dar flush nas sessoes, estou fechando todas elas depois de usar (o q eu sempre fiz), já deixei meu Hibernate seco pra tentar ver se o problema era cash e nada. Outra coisa mais estranha eh q, o pc q inseriu ou fez a alteração, consegue enxergar, apenas o outro q nao…

Peço a ajuda de vcs, como jah me ajudaram inderetamente varias outras vezes…

Muito Obrigado e qualquer coisa eh soh perguntar! ^^

3 Respostas

G

bom galera...achu q achei o erro...fui fazer um teste e exclui todos os dados da minha tabela, entao fui fazer a pesquisa novamente e os dados estavam la ainda, somente fechando e abrindo a aplicação de novo para a pesquisa me trazer a tabela vazia...eh como se eu tivesse q limpar meu metodo de pesquisa antes de fazer outra pesquisa... Bom, meu metodo de pesquisa eh esse:

@SuppressWarnings("unchecked")
	public ArrayList<T> pesquisarTudo (String ordenacao){
		Session sessao = null;
		try{
			sessao = getSessaoAberta();
			sessao.flush();
			Criteria criterio = sessao.createCriteria(Object.class);
			criterio.addOrder(Order.asc(ordenacao));

			return (ArrayList<T>)criterio.list();

		}catch (Exception e){
			e.printStackTrace();
			if (!(sessao==null)){
				sessao.close();
			}
		}finally{
			if(sessao.isOpen()){
				sessao.clear();
				sessao = getSessaoAberta();
				sessao.flush();
				sessao.close();
			}
		}
		return new ArrayList<T>();
	}

se puderem me ajudar, agradeço muito ^^

vlw!

C

Você já tentou utilizar um gerenciador de pool de conexões, como o C3p0, por exemplo?
Eu já tive esse problema. Criei uma Thread e atualizava uns valores no banco de dados. Mesmo dando o flush, os valores somente eram alterados quando eu desligava/ligava a aplicação.
Procure adicionar o C3P0 e veja o que acontece.
Espero ter ajudado.
[]'s

G

candido.areas:
Você já tentou utilizar um gerenciador de pool de conexões, como o C3p0, por exemplo?
Eu já tive esse problema. Criei uma Thread e atualizava uns valores no banco de dados. Mesmo dando o flush, os valores somente eram alterados quando eu desligava/ligava a aplicação.
Procure adicionar o C3P0 e veja o que acontece.
Espero ter ajudado.
[]'s

Aeeee…muito obrigado cara…era isso mesmo. Bom, eu baixei a biblioteca c3p0-0.9.1.jar e adicionei essas linhas no meu hibernate:
<property name="c3p0.acquire_increment">1</property> <property name="c3p0.timeout">1800</property> <property name="c3p0.min_size">3</property> <property name="c3p0.max_size">100</property> <property name="c3p0.max_statements">0</property> <property name="c3p0.idle_test_period">900</property>

Bom, agora esta tudo funcionando normalmente…muito obrigado novamente e esta ai a dica para todos que tiverem este problema ;D

Criado 1 de agosto de 2011
Ultima resposta 2 de ago. de 2011
Respostas 3
Participantes 2