Problema
O Motor Periférico inicia normalmente, mas logo após iniciar (os conversores e geradores de retorno) pára de responder e exibe a mensagem: “Sorry, it seems there’s already an instance of this program running on your system” (“Desculpe , parece que já existe uma instância deste programa em execução no seu sistema”).
Solução/Procedimento
O DF-e Client possui um mecanismo chamado Single Instance.
Ele é responsável por garantir que somente uma instância do DF-e Client seja executada por vez.
Quando o Motor Periférico inicia, ele se “registra” passando uma chave (OOBJ-NFE-MOTOR-PERIFERICO) na porta 40050.
Segue abaixo um exemplo de log quando existe uma outra instância do DF-e Client rodando na mesma máquina:
Running Oobj Motor-Periferico-GUI... wrapper | --> Wrapper Started as Console wrapper | Java Service Wrapper Community Edition 64-bit 3.5.7 wrapper | Copyright (C) 1999-2010 Tanuki Software, Ltd. All Rights Reserved. wrapper | http://wrapper.tanukisoftware.com wrapper | wrapper | Launching a JVM... jvm 1 | WrapperManager: Initializing... jvm 1 | 3005 09:25:24,280 [WrapperSimpleAppMain] INFO ApagaFontTempFiles - Foram encontrados 1 arquivos para serem excluÃdos do diretório temporário (/opt/oobj/aplicativos/oobj/motor-periferico-std/temp). jvm 1 | 3005 09:25:24,286 [WrapperSimpleAppMain] INFO MotorPerifericoMain - Timezone do sistema: America/Cuiaba jvm 1 | 3005 09:25:24,286 [WrapperSimpleAppMain] INFO MotorPerifericoMain - Configurando timezone para 'America/Sao_Paulo' jvm 1 | 3005 09:25:24,287 [WrapperSimpleAppMain] INFO MotorPerifericoMain - Procurando a pasta de configuração no caminho relativo. jvm 1 | 3005 09:25:24,287 [WrapperSimpleAppMain] INFO MotorPerifericoMain - O periférico está instalado em [/opt/oobj/aplicativos/oobj/motor-periferico-std/jars/oobj-nfe-motor-periferico-gui-18.15.0.jar] jvm 1 | 3005 09:25:24,304 [WrapperSimpleAppMain] DEBUG Config - carregando arquivo - /opt/oobj/Config/sistema.properties jvm 1 | 3005 09:25:24,307 [WrapperSimpleAppMain] INFO MotorPerifericoMain - Inicializando banco de dados local do periferico. jvm 1 | 3005 09:25:24,372 [WrapperSimpleAppMain] INFO SQLiteServer - Inicializando SQLiteDB... Driver 'SQLiteJDBC'... jvm 1 | 3005 09:25:24,378 [WrapperSimpleAppMain] INFO SQLiteServer - O arquivo do banco SQLite esta localizado em '/opt/oobj/Config/bdlocal/localsqlite.db' jvm 1 | 3005 09:25:24,378 [WrapperSimpleAppMain] INFO MotorPerifericoMain - Banco de dados local inicializado com sucesso. jvm 1 | 3005 09:25:24,378 [WrapperSimpleAppMain] INFO MotorPerifericoMain - Interface grafica desabilitada pela opcao '-serviceonly'. Rodando apenas servico. jvm 1 | 3005 09:25:24,417 [WrapperSimpleAppMain] DEBUG fericoSingleInstance - Existe outra instancia jvm 1 | 3005 09:25:24,418 [WrapperSimpleAppMain] ERROR MotorPerifericoMain - Erro na inicializacao: Existe outra instancia em execucao. Finalizando jvm 1 | java.lang.RuntimeException: Existe outra instancia em execucao. Finalizando jvm 1 | at br.com.oobj.me.gui.MotorPerifericoMain.<init>(MotorPerifericoMain.java:96) jvm 1 | at br.com.oobj.me.gui.MotorPerifericoMain.getInstance(MotorPerifericoMain.java:414) jvm 1 | at br.com.oobj.me.gui.MotorPerifericoMain.main(MotorPerifericoMain.java:362) jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) jvm 1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) jvm 1 | at java.lang.reflect.Method.invoke(Method.java:498) jvm 1 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:287) jvm 1 | at java.lang.Thread.run(Thread.java:745) jvm 1 | 3005 09:25:24,419 [WrapperSimpleAppMain] DEBUG MotorPerifericoMain - Finalizando em 10 segundos wrapper | <-- Wrapper Stopped
Esse erro pode ocorrer por dois motivos:
1- quando realmente existe uma outra instância em execução (Esse mecanismo foi criado exatamente para garantir que não tenhamos 2 instâncias em execução ao mesmo tempo). Se isso ocorrer, verifique se não tem outra instância sendo executada por outro usuário. Uma forma de verificar é analisando os processos do Windows (de todos os usuários). Procure pelo processo: “javaw.exe”
2- quando o Motor Periférico tenta registrar nessa porta (40050), mas ela não está disponível. O Sistema Operacional exibe então a mensagem de erro: “Sorry, it seems there’s already an instance of this program running on your system”.
A solução para o problema é liberar a porta no Sistema Operacional (firewall) para que o Motor Periférico possa acessá-la.
Ou configurar outra porta através do parâmetro PORTA_REGISTRO_PERIFERICO do preferencias-padrao.properties
Referência
Sem referências