Threads e banco de dados litebase(palm)

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

Sei que não vem ao caso perguntar isso, mas acabei ficando curioso: qual a sua necessidade de ter um banco no Litebase instanciado no seu servidor e você do Palm somente consultar essas informações?
Se eu entendi direito, você tem a instância do banco em um servidor, manda a sua consulta pela rede e recebe como resposta os dados da consulta para que possam ser manipulados no Palm. Isso está correto?

[]'s.

Opa, não é isso não, eu devo ter me expressado mal.
Seguinte, o servidor fica conectado a base local da empresa(Firebird), o cidadão sai com o palm carregado de informações e tem duas opçoes para consulta de estoque dos produtos: pelo sistema carregado no palm ou online, consultando o servidor!

Já a parte do litebase serve para carregar o palm com informações da base local da empresa, pois o banco de dados do palm é diferente, o palm usa o litebase, então tenho que exportar os dados firebird pra litebase quando carrego o palm.

O que parece estar acontecendo é que a thread do servidor está “interferindo” na conexão com litebase…