Galera.
Fiz um programa de mercado. No netbens , dentro do netbens tem um banco de dados derby: eu criei um banco la dentro
-eu queria rodar esse programa em outras maquinas, o que é preciso?
Meu programa esta pronto ( somente no meu computador)
-se eu gerar o jar dele, ele nao salva o banco de dados . Entao. O q eu faco??
Help;
Terminei meu programa.. E agora?
5 Respostas
Salva os dados em um banco real (MySQL, Postgres, Oracle), ao inves de banco em memória.
Seguinte amigo, o derby usa uma instancia da JVM para poder funcionar, pensando dessa forma existem 3 maneiras de usar seu banco de dados:
1 - Seu programa acessando o banco na rede (modo cliente)
2 - Seu programa servindo outras máquinas na rede (modo servidor)
3 - Seu programa levando consigo o banco e sendo o unico a acessar (modo embarcado)
Me corrija caso eu esteja errado, mas eu imagino que você queira distribuir sua aplicação e mandar o banco de dados junto, sendo assim, vou assumir que você quer o modo embarcado.
Primeiramente vou explicar porque o seu programa só funciona com o Netbeans aberto nesse momento… Quando você vai no Netbeans e inicia o banco de dados por ele, o próprio netbeans inicia o servidor apache derby então o endereço “jdbc:derby//localhost:1527/seuBanco” fica disponivel, ou seja, ele usa uma instancia da JVM pra isso, e portanto, quando você fecha o Netbeans ele consequentemente também fecha a instancia da JVM e derruba seu banco de dados.
A solução para que você distribua sua aplicação junto com o banco é assim que iniciar o programa fazer com que ele use a propria instancia da JVM para iniciar o servidor apache derby, ou seja, sempre que seu programa estiver aberto seu banco vai estar online, e sempre que estiver fechado seu banco vai estar offline.
Legal! e como fazer isso?
Primeiro, é necessário que você tenha as bibliotecas do derby no seu programa, veja se na biblioteca tem adicionado os jars: “derbyNet.jar”, “derby.jar”, e “derbyClient.jar”.
Segundo, eu aconselho a iniciar o banco antes de qualquer transação com o banco (afinal ele tem que estar online pra isso =D), então geralmente escolho colocar o código que inicia o derby na minha fábrica de conexões, mas você pode colocar também na inicialização do seu programa, e para isso use o seguinte método:
private void iniciaServidor(String ip, String caminhoBanco) {
try {
//Seta a variável DERBY_HOME para o local que ficarão os bancos de dados
File file = new File(caminhoBanco);
System.setProperty("derby.system.home", file.getAbsolutePath());
//cria o objeto de controle do servidor
//libera todos os acessos-> InetAddress.getByName("0.0.0.0"), 1527
//libera só acesso externo -> InetAddress.getByName("192.168.25.100"), 1527
//vazio só libera localhost
NetworkServerControlImpl server = new NetworkServerControlImpl(InetAddress.getByName(ip), 1527);
//inicia o servidor
server.start(new PrintWriter(System.out));
} catch (Exception ex) {
System.out.println(ex);
}
}
o parametro “ip” é quem define que tipo de conexões seu servidor vai aceitar, e o parametro “caminhoBanco” é o caminho onde fica a pasta que contém seu banco de dados no seu computador, eu aconselho você criar uma pasta chamada “database” na mesma pasta onde está seu executavel, e copiar os arquivos do seu banco de dados pra ela, assim você pode passar para o parametro “caminhoBanco” a String “database” que vai funcionar.
Me perdoe o livro, mas espero que tenha ajudado.
eu acho que estou quase conseguindo!, mas não deu certo kkk
eu devo estar colocando alguma coisa errada , ><
meu IP ou o caminho, nao sei, vou tentar mais, mas agradeço!
Posta seu arquivo que faz a conexão com o banco que se der eu modifico para você…
Eu acho q é este: kk
C:\document and settings\usuario.netbeans-derby\zcliente
O banco de dados fica salvo nesse caminho