Aplicação Java como Serviço Windows

7 respostas
R

Pessoal,

Estou tentando tornar uma aplicação java em um serviço. Essa aplicação não tem GUI, é apenas um agente responsável por coletar dados, processar e salvar em outra base de dados.

Manualmente o meu projeto funciona (via DOS), porém, quando tento jogar ele como serviço o Windows da a seguinte mensagem de erro

O Serviço Integra em Computador local foi iniciado e interrompido. Alguns serviços são interrompidos automaticamente se não estiverem sendo usados por outros serviços ou programas.

Alguém já passou por isso?

Estou usando o JavaService para criar o serviço

O Debug do JavaService acusa isso


***** Start of new JavaService log session *****
Invoking Windows Service, register service control dispatcher
ServiceMain function invoked, with  one argument, service name (Integra)
Created ProcessGlobals singleton instance
Logging service event start[ed] event (starting now)...
logEventMessage (type #[telefone removido]) : Integra1073741828
Creating thread (StartServiceThread)
Start Service Thread invoked
Start Service Thread setting current directory to 'C:\\JavaService-2.0.10etting current directory to 'logEventMessage (type #C:\\JavaService-2.0.10'
073741829) : Integra1073741829
Service Main waiting for event flags to be set
Start Service Thread starting the java service...
StartJavaService(serviceParams)
logFunctionError: LoadLibrary
logFunctionMessage: LoadLibrary:Não foi possível encontrar o módulo especificado.


logEventMessage (type #-[telefone removido]) : Could not load the Java Virtual Machine.-[telefone removido]
logEventMessage (type #-[telefone removido]) : c:\Program Files\Java\jdk1.6.0_25\jre\bin\client\jvm.dll;c:\Program Files\Java\jdk1.6.0_25\jre\bin\java.dll;c:\Program Files\Java\jdk1.6.0_25\jre\bin\hpi.dll;c:\Program Files\Java\jdk1.6.0_25\jre\bin\verify.dll;c:\Program Files\Java\jdk1.6.0_25\jre\bin\zip.dll-[telefone removido]
StartJavaService failed
Start Service Thread failed
logEventMessage (type #-[telefone removido]) : Integra-[telefone removido]
Service Main cleanup and end (service stopped)
Destroyed ProcessGlobals singleton instance

***** End of JavaService log session *****

7 Respostas

H

Vc já adicionou o path da instalação do Java nas variáveis de ambiente do windows?

R

Falas do JAVA_HOME?

Sim.

Coloquei assim

JAVA_HOME=C:\Program Files\Java\jre6;c:\Program Files\Java\jdk1.6.0_25\jre

H

Blz, e no path?

Na chave: Path coloque algo parecido com C:\dev\jdk\jdk1.6.0_23\bin.

R

Vou verificar e posto aqui! Vlw a atenção

R

jakefrog, Muito obrigado por essa dica! Pensei que apenas o JDK estando no JAVA_HOME já resolvia a situação.

Coloquei no Path como falado e deu certo, serviço iniciado.

Posto abaixo a solução completa para ajudar

Peguei o BAT do exemplo do JavaService, fiz modificações para meu uso e deu certo.

setlocal
set JAVA_HOME="c:\Program Files\Java\jdk1.6.0_25"
set JVMDIR=%JAVA_HOME%\jre\bin
set JSBINDIR=%CD%\JavaService-2.0.10
set JSEXE=%JSBINDIR%\JavaService.exe
set SSBINDIR=%JSBINDIR%
set APPDIR=%CD%
 
@echo .
@echo Installing Integration service... Press Control-C to abort
@pause
@echo .
%JSEXE% -uninstall IntegraMvInteract
%JSEXE% -install IntegraMvInteract %JVMDIR%\client\jvm.dll -Djava.class.path=%APPDIR%\IntegraMvInteract.jar -Xms16M -Xmx32M -start core.Main -params start memory -stop core.Main -method stop -out %JSBINDIR%\stdout.log -err %JSBINDIR%\stderr.log -current %JSBINDIR% -manual -description "Integra Mv Interact"
@echo .
@echo Starting Integration service... Press Control-C to abort
@pause
@echo .
net start IntegraMvInteract
@echo .
%JSEXE% -query IntegraMvInteract
@echo .

Abraços e Obrigado

H

Pessoal eu tenho um aplicativo rodando blz com o JavaService em outro PC. Fui configurar ele agora aki e deu esse mesmo problema. É a 1ª vez q instalo no Win7 Win64, será q isso pode ser a causa?

Segue meu bat de instalação, eu mudei o executável de JavaService.exe pra HikariSchAppService.exe, no outro PC funciona blz assim.

@echo off

@echo .
@echo . installAppService.cmd - Install HikariScheduler ApplicationServer as Service
@echo .


setlocal
@rem note that if JVM not found, service 'does not report an error' when startup fails, although event logged
set JAVA_HOME=D:\P64\jdk\jdk_1_6_25
set JVMDIR=%JAVA_HOME%\jre\bin\server
set JSBINDIR=D:\PROG2\Hikari\HikariSchedulerAppServer
set JSEXE=%JSBINDIR%\HikariSchAppService.exe
set SSBINDIR=%JSBINDIR%
set LIBPATH=%JSBINDIR%\lib
set CLASSPATH=%LIBPATH%\hikari.jar;%LIBPATH%\postgresql-8.2-505.jdbc4.jar;%LIBPATH%\xstream-1.2.1.jar;%LIBPATH%\HikariScheduler.jar

set ServiceName="HikariScheduler ApplicationServer"
rem set StartClass=hikari.scheduler.ui.network.Server
set StartClass=hikari.scheduler.ui.debug.CommandUI



@echo . Using classpath:
@echo .
@echo %CLASSPATH%
@echo .


@echo . Using following version of JavaService executable:
@echo .
%JSEXE% -version
@echo .


@echo Installing service... Press Control-C to abort
@pause
@echo .
rem ; %JSEXE% -install "HikariScheduler ApplicationServer" %JVMDIR%\jvm.dll -Djava.class.path=%CLASSPATH% -Xms16M -Xmx32M -start hikari.scheduler.ui.network.Server -out %JSBINDIR%\resources\stdout.log -err %JSBINDIR%\resources\stderr.log -current %JSBINDIR% -auto -description "Acessa o Database e possui toda a lógica do sistema, oferecendo serviços à Camada de Aplicação"

%JSEXE% -install %ServiceName% %JVMDIR%\jvm.dll -Djava.class.path=%CLASSPATH% -Xms16M -Xmx32M -start %StartClass% -out %JSBINDIR%\resources\stdout.log -err %JSBINDIR%\resources\stderr.log -current %JSBINDIR% -auto -description "Acessa o Database e possui toda a lógica do sistema, oferecendo serviços à Camada de Aplicação"
@echo .
pause

Vi algumas pessoas falando sobre problema pra encontrar a JVM. Aki ela tá no %JAVA_HOME%\jre\bin\server, naum tem nada relacionado a client lá. Problema q o search do Win7 é um lixo, mando procurar por jvm.dll e ele naum encontra nada, mesmo ela estando lá dentro do %JAVA_HOME%, aí naum dá pra procurar outros arquivos igual.

Ele dá o mesmo erro, instala de boa mas naum starta. Qd eu rodo do cmd funciona blz:

java -cp lib\*;. hikari.scheduler.ui.debug.CommandUI

Na época q desenvolvi esse soft ainda tive o cuidado de criar ferramentas de debug. Pra funcionar como server, com socket pra ser acessado pela UI, ele usa a class hikari.scheduler.ui.network.Server, mas tb tem a class hikari.scheduler.ui.debug.CommandUI q tem um menu em texto com as operações básicas e printa exceptions.

Uma coisa interessante é q ele naum tá gerando os arquivos stdout.log e sterr.log, então parece q o problema é bem no início do startup do JavaService mesmo, antes de startar o CommandUI.

Tem anos q eu desenvolvi isso, e há anos ele funciona blz sem apresentar bug nenhum. Mesmo assim nesses anos eu aprendi muito mais sobre Java e Software Enginnering, qd der tempo pretendo fazer novas especificações e modelos, documentar tudo direitinho e desenvolver um 2.0 com mais qualidade.

Alguma sugestão do q pode tar causando esse problema, ou de uma alternativa pro JavaService? Ele naum é desenvolvido desde 2006 e o forum oficial tá abandonado, é duro depender de algo q naum tem suporte nenhum :frowning:

H

haha mancada a minha! :smiley:

No outro PC eu uso o WinXP antigão, e aki desdo upgrade uso o Win7 Win64! Por ser Win64 eu instalei o JDK Win64, mas o JavaService é Win32! Testei com uma JRE Win32 desatualizada q eu ainda tinha aki e funcionou, então fiz download da 1.6.0.29 e tb funcionou blzinha :smiley:

Criado 28 de outubro de 2011
Ultima resposta 4 de dez. de 2011
Respostas 7
Participantes 3