Falha ao iniciar o Motor Periférico - An instance of this program running on your system
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