TCServer e Terminais de Consulta Gertec

TCServer e Terminais de Consulta Gertec

Manual de Diagnóstico e Verificação – TCServer e Terminais de Consulta

Objetivo

Orientar o técnico a diagnosticar e corrigir falhas de comunicação, banco de dados e operação dos terminais de consulta Gertec (TC504, TC506, TC508, Busca Preço G2) conectados ao TCServer, assegurando o funcionamento estável da aplicação e da rede.

1. Descrição do Erro Mais Comum

Sintoma:

  • Terminais conectam e desconectam repetidamente no log do TCServer.

  • Linhas de log apresentam:

    org.h2.jdbc.JdbcSQLException: The database has been closed [90098-190]
  • A interface gráfica do TCServer abre, mas o banco interno não grava dados de produto.

  • Terminais exibem a mensagem “NAO REGISTRADO“:

WhatsApp Image 2025-10-20 at 15.01.06.jpeg

 

Causa Provável:

Bloqueio de acesso de escrita no diretório de dados interno do TCServer (.tc-server), impedindo o banco H2 de manter conexão ativa.

2. Testes de Diagnóstico

Teste 1 — Verificação de Conectividade de Rede

Objetivo: confirmar que o terminal de consulta comunica-se corretamente com o servidor.

Procedimentos:

  1. No terminal, executar ping para o IP do servidor (ex.: 10.3.20.X → 192.168.1.X).

  2. Verificar resposta média de tempo e ausência de perda de pacotes.

  3. Validar portas TCP abertas no servidor:

    • Porta 6500 → SC501 (serviço principal).

    • Porta 16510 → SC504 (consultas TCP).

    • Porta 8080 → Servidor HTTP (interface).

Resultado Esperado:

  • Todos os pings respondendo.

  • Portas TCP com status LISTENING.

  • Sem quedas de conexão.

Teste 2 — Verificação de Execução do Servidor

Objetivo: confirmar se o TCServer está corretamente inicializado e escutando suas portas de serviço.

Procedimentos:

  1. Abrir o arquivo tcserver.log.

  2. Confirmar a presença das linhas:

    O servidor SC501 está escutando a porta 6500 O servidor SC504 está escutando a porta 16510 O Servidor HTTP está escutando a porta 8080
  3. Verificar se o log registra “Terminal conectado”.

Resultado Esperado:

  • Mensagens de inicialização conforme acima.

  • Terminais listados como conectados sem mensagens de desconexão em loop.

Teste 3 — Verificação do Banco Interno (H2)

Objetivo: garantir que o banco de dados embarcado está acessível.

Procedimentos:

  1. Confirmar se a opção Banco Interno está selecionada na aba Produtos do TCServer.

  2. Inserir um novo produto manualmente.

  3. Observar o log após o salvamento.

  4. Verificar se o erro “The database has been closed” ocorre novamente.

Resultado Esperado:

  • Produto inserido com sucesso.

  • Nenhum erro de fechamento de banco no log.

  • Tabela de produtos atualizada automaticamente.

Teste 4 — Validação de Permissões e Escrita

Objetivo: confirmar se o TCServer tem acesso de leitura e escrita aos diretórios.

Procedimentos:

  1. Acessar o caminho C:\Gertec\TCServerData\.tc-server.

  2. Tentar criar manualmente um arquivo de texto.

  3. Verificar se há bloqueio de gravação (ex.: “Acesso negado”).

  4. Confirmar que os atributos de somente leitura estão desabilitados.

  5. Conferir se as permissões NTFS concedem:

    • Administradores → Controle total

    • SYSTEM → Controle total

    • Usuários → Modificar

Resultado Esperado:

  • Criação de arquivo permitida.

  • Nenhuma mensagem de acesso negado.

  • Banco de dados funcional.

Teste 5 — Verificação de Execução Controlada

Objetivo: garantir que o servidor é iniciado corretamente e permanece em segundo plano.

Procedimentos:

  1. Executar o jar com privilégios de administrador.

  2. Confirmar que:

    • A interface gráfica abre normalmente.

    • A janela de console permanece minimizada.

    • O log continua sendo gravado em tempo real.

Resultado Esperado:

  • Interface do TCServer visível e funcional.

  • Log atualizado continuamente.

  • Sem travamentos ou janelas sobrepostas.

Testes Complementares

Teste

Propósito

Resultado Esperado

Teste

Propósito

Resultado Esperado

Ping contínuo (5 min)

Avaliar estabilidade de rede

Nenhuma perda de pacotes

Monitoramento do log (1h)

Confirmar ausência de desconexões

Apenas mensagens de conexão

Teste de recarregamento de produtos

Validar atualização do banco

Produtos atualizados e exibidos

Execução como administrador

Garantir permissões completas

Inicialização bem-sucedida

4. Confirmação Final do Funcionamento

Quando o sistema está em perfeito funcionamento, o log deve exibir o seguinte padrão:

[INFO][APP] O servidor SC501 está escutando a porta 6500 [INFO][APP] O servidor SC504 está escutando a porta 16510 [INFO][APP] O Servidor HTTP está escutando a porta 8080 [INFO][APP] Terminal conectado: 10.3.20.X (Busca preço)

Sem registros de:

[WARNING][APP] Cliente desconectado org.h2.jdbc.JdbcSQLException: The database has been closed

5. Considerações Técnicas (segundo manual oficial)

De acordo com o manual da versão R00.22:

  • O TCServer é compatível com Java 8 (JRE 1.8).

  • Suporta três modos de base de dados:

    1. Interno (H2) – embarcado.

    2. Externo (JDBC) – conexão com MySQL, SQL Server, PostgreSQL.

    3. Arquivo texto (UTF-8) – formato codigo|descricao|preco1|preco2Manual_Usuario_TCServer_R00.22.

  • A atualização de produtos ocorre automaticamente a cada hora, ou manualmente via opção “Recarregar”Manual_Usuario_TCServer_R00.22.

6. Conclusão

Após a execução dos testes acima, o ambiente estará plenamente funcional se:

  • Todos os terminais permanecem conectados sem desconexões em loop.

  • O log tcserver.log mostra conexões estáveis.

  • O banco interno grava produtos sem erro.

  • A GUI responde normalmente e exibe os equipamentos conectados.

 

FAQ – TCServer e Terminais de Consulta

1. Por que os terminais de consulta ficam conectando e desconectando o tempo todo?

Isso ocorre, em geral, porque o banco de dados interno (H2) do TCServer está com acesso bloqueado para gravação.
O servidor não consegue registrar logs nem manter sessão ativa com os terminais, o que faz com que eles reconectem repetidamente.
A solução é corrigir as permissões da pasta .tc-server e garantir que o TCServer esteja sendo executado como Administrador.

2. O que significa o erro “The database has been closed [90098-190]”?

Esse erro indica que o banco interno H2 foi fechado por falta de permissão de escrita.
Ele é comum quando o diretório C:\Gertec\TCServerData\.tc-server está marcado como somente leitura ou pertence a outro usuário do sistema.
Corrigir as permissões NTFS e reiniciar o TCServer resolve o problema.

3. O TCServer abre, mas não carrega a lista de produtos. O que fazer?

Verifique se:

  • O modo de banco de dados está configurado como Interno (H2) ou o caminho de integração externo está correto.

  • O log tcserver.log não contém mensagens de erro de banco.

  • A pasta .tc-server permite escrita.

Após isso, reinicie o TCServer e teste novamente.


4. Como confirmar que o TCServer está funcionando corretamente?

Abra o arquivo tcserver.log e procure as linhas:

O servidor SC501 está escutando a porta 6500 O servidor SC504 está escutando a porta 16510 O Servidor HTTP está escutando a porta 8080

e também:

Terminal conectado: 10.3.20.X

Essas mensagens indicam funcionamento pleno.

5. Como saber se há problema de rede entre o terminal e o servidor?

Realize o teste ping do terminal para o IP do servidor e observe:

  • Tempo médio abaixo de 10 ms.

  • Nenhuma perda de pacotes.
    Também é possível testar as portas 6500, 16510 e 8080 via telnet ou PowerShell (Test-NetConnection).

6. O que fazer se o terminal não aparece como conectado no log?

  • Confirme se o terminal está no mesmo segmento de rede (exemplo: 10.3.20.x ↔ 192.168.4.x, com gateway correto).

  • Verifique se a porta 6500 está LISTENING no servidor (netstat -ano | findstr :6500).

  • Certifique-se de que o firewall permite conexões de entrada nessas portas.

7. Como corrigir o erro “Acesso negado” nos arquivos da pasta .tc-server?

Abra as propriedades da pasta:

  1. Clique com o botão direito → Propriedades → Segurança.

  2. Conceda Controle Total a Administradores e Sistema (SYSTEM).

  3. Marque a opção Herdar permissões para subpastas e arquivos.

  4. Execute o TCServer novamente como administrador.

8. Posso usar outro banco além do interno (H2)?

Sim. O TCServer suporta bancos externos via JDBC (como MySQL, SQL Server, PostgreSQL).
No entanto, para uso em lojas com terminais de consulta, recomenda-se manter o modo Interno (H2) pela simplicidade e rapidez.

9. Como verificar se o firewall está bloqueando o TCServer?

Abra o PowerShell e execute:

Get-WinEvent -LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" -MaxEvents 50

Verifique se há registros de bloqueio ou exclusão de regras relacionadas a Java ou TCServer.

10. Como posso confirmar que as portas estão realmente abertas?

Execute o comando:

netstat -ano | findstr :6500

O resultado deve conter:

TCP 0.0.0.0:6500 LISTENING

Isso confirma que o TCServer está ouvindo conexões naquela porta.

11. O que significa “Cliente desconectado” seguido por “Terminal conectado” no log?

Essas mensagens indicam que o terminal perdeu momentaneamente a conexão, mas reconectou com sucesso.
Se o comportamento for contínuo, verifique:

  • Cabo de rede e switch.

  • Gateway e máscara do terminal.

  • Estabilidade do IP do servidor.

12. Como iniciar o TCServer corretamente?

Execute o atalho ou o arquivo JAR:

  • Sempre com botão direito → Executar como administrador.

  • Aguarde a abertura da interface gráfica.

  • Verifique se a janela de console fica em segundo plano e o log é atualizado.

13. O log tcserver.log não aparece. O que devo verificar?

O arquivo é criado automaticamente em:

C:\Gertec\TCServerData\tcserver.log

Se não for gerado:

  • Confirme que a pasta existe e está acessível.

  • Verifique se há espaço em disco.

  • Certifique-se de que o TCServer possui permissão de gravação.

14. Como saber que o ambiente está 100% funcional?

O sistema está estável quando:

  • Todos os terminais aparecem conectados na interface do TCServer.

  • O log mostra conexões constantes e sem “database closed”.

  • As portas 6500, 16510 e 8080 estão abertas.

  • Produtos são consultados normalmente no terminal.