Boa tarde pessoal.
Estou terminando de desenvolver um programa para controle de estoque.
Vou sábado agora no cliente implantar.
Entretanto, me deparei com um problema seríssimo que pensei já tivesse resolvido.
Vamos lá, vou tentar me fazer entender…
Dentro do programa, eu tenho uma classe chamada BD, que irá fazer todas as consultas, inserts e updates no banco de dados. Apliquei nesta classe o padrão de projeto Singleton, como se segue:
private static BD instance = null;
public static BD getInstance(){
if(instance==null)
{
System.out.println("criando BD");
instance = new BD();
}
return instance;
}
private BD()
{
try
{
Class.forName(driver);
}
catch (ClassNotFoundException ex)
{
System.out.println("Erro ao conectar ao banco: "+ex);
}
}
A Classe funciona sem problemas, e durante a execução do programa o Singleton funciona normalmente.
Entretanto fui fazer um teste clicando 2x no executável do programa (ou seja, abri 2x o mesmo programa, para simular 2 computadores executando o programa), e notei que ele cria uma instância da classe BD pra cada instância do programa propriamente dita.
Então resolvi aplicar o Singleton para a classe Main, que gera o programa, e não resolveu, ou seja, ele cria uma instância do programa para cada vez que executo o jar.
O que preciso: que o programa sendo executando em no máximo 3 computadores, compartilhe sempre a mesma instância da classe BD para manipulação do banco de dados, pois com isso eu garantirei que o banco não será manipulado simultaneamente gerando incontáveis problemas…
Todos podem imaginar o problemão de dois computadores estarem efetuando uma venda ao mesmo tempo se não houver esta restrição…o pior deles é duas vendas como mesmo número, o que não poderá acontecer, jah que a tabela de venda tem o número da venda como primary key, que por sua vez é uma foregin key de outra tabela…
Se alguém puder dar alguma luz ae pra mim, ficarei muuuuuuuuuuuuuuito agradecido…
Vlw!!!
