Boa tarde!
Criei um programa em Java que será um servidor para aceitar consultas de palms, então quando inicio o programa já dou start no servidor (Ele usa threads).
Esse mesmo programa irá ler bases de dados no formato Litebase (banco de dados para palms e pocket pc(totalcross)) e gravá-las num banco firebird.
Isso tudo já funciona!, porém quando eu fecho minha aplicação pelo netbeans aparece uma exceção do tipo:
run:
Exception in thread "Thread-3" java.lang.IllegalStateException: zip file closed
at java.util.zip.ZipFile.ensureOpen(ZipFile.java:403)
at java.util.zip.ZipFile.getEntry(ZipFile.java:148)
at java.util.jar.JarFile.getEntry(JarFile.java:206)
at java.util.jar.JarFile.getJarEntry(JarFile.java:189)
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:754)
at sun.misc.URLClassPath.getResource(URLClassPath.java:168)
at sun.misc.URLClassPath.getResource(URLClassPath.java:220)
at java.lang.ClassLoader.getBootstrapResource(ClassLoader.java:1126)
at java.lang.ClassLoader.getResource(ClassLoader.java:975)
at java.lang.ClassLoader.getResource(ClassLoader.java:973)
at java.lang.ClassLoader.getResource(ClassLoader.java:973)CONSTRUÍDO COM SUCESSO (tempo total: 8 segundos)
Se não inicio o servidor, apenas importo as bases e fecho o programa, não aparece a exceção, mas quando dou start no servidor e vou importar as bases e fecho o programa aparece a exceção…
Abaixo o código da parte do servidor:
private Thread threadSistema;
ServerSocket serv = null;
private void jBtIniciarServidorActionPerformed(java.awt.event.ActionEvent evt) {
threadSistema = new Thread(this);
threadSistema.start();
}
public void run() {
try {
serv = null;
serv = new ServerSocket(6777);
jTserver.append("Servidor Iniciado...");
jTserver.append("Aguardando Conexão com Cliente...");
while (true) {
Socket conexao = serv.accept();
new ThreadInicia(conexao).start(); //chama uma outra thread pra cada nova conexão
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Erro - Servidor não Iniciou ou já está em Execução");
}
}
Tem ainda a função da ThreadInicia() que trata da conexão do cliente… mas nem me conecto a aplicação nos testes, então nem postei.
Agora a parte do banco:
private LitebaseConnection conexao;
try {
Class.forName("litebase.LitebaseConnection");
conexao = LitebaseConnection.getInstance("bdHS"); //prefixo das tabelas do banco
}
catch(ClassNotFoundException e){
System.out.println(e.getMessage() + "Erro na Classe");
}
Esses comandos acima é que criam a exceção, eles estão numa função que é chamada no momento da abertura do frame, deixando a conexão disponível pra quando quiser utilizá-la.
Qualquer sugestão será bem vinda, lembrando que a exceção só aparece quando fecho o programa pelo netbeans.
Muito Obrigado