Criando uma aplicação para rodar como serviço Windows/Linux

Gostaria de saber, como posso desenvolver um aplicativo para rodar como serviço, inicialmente esse serviço irá rodar no WINDOWS, mas existe a posibilidade de ser executado em um ambiente LINUX ?

http://wrapper.tanukisoftware.org/doc/english/introduction.html

É este mesmo que vc. precisa. Só uns detalhes importantes:

  1. Lembre-se de setar o “java.awt.headless” nas propriedades. Vc. não quer seu serviço tentando acessar a parte gráfica, principalmente em Linux/Unix.

  2. Em Windows, se seu serviço disparar outras JVMs “filhas”, lembre-se de utilizar a opção “-Xrs” na linha de comando, caso contrário elas vão morrer quando um usuário fizer logoff (não pergunte…).

  3. Tb. em windows, se seu serviço Java tentar disparar um aplicativo Windows que faça uso de interface gráfica, ele será iniciado sem erro, mas não funcionará se não houver alguem “logado” no console.

Muito obrigado !!! Vou ver o link e tomar cuidados com os pontos mencionados !

Tem este também muito bom
http://javaservice.objectweb.org/

Estou precisando de ajuda com o JavaService. Vocês já usaram ele?
Obrigada
Cláudia

Qual tipo de ajuda exatamente você esta precisando ?

Olá.
Eu já usei o JavaService, com sucesso, para colocar o JBoss como serviço do Windows.
Agora tenho uma classe java normal (teste.class), e precisava que ela tb fosse um serviço, mas não estou conseguindo…

Usei o seguinte código:

JavaService -install TESTE C:\Sun\AppServer\jdk\jre\bin\server\jvm.dll -Djava.class.path=C:\teste.jar;C:\Sun\AppServer\jdk\lib\tools.jar -Xms128M -Xmx512M -start teste -out C:\stdout.log -err C:\stderr.log

onde teste é o nome da classe e TESTE é o nome que eu quero atribuir ao serviço.
Obrigada
Cláudia

ola Pessoal,

to querendo fazer um simples programa virar serviço do windows.
Só q sou completamente leigo…vi q o java java service é o mais fácil.

Alguém poderia dar uma mão ???

Muito obrigado

Ricardo

ola pessoal…

Consegui fazer a aplicação rodar com serviço…agora queria fazer uma pergunta a vcs…pode ser uma aplicação com interface gráfica ???..sem intervenção com o usuário…só um log de eventos…

Muito Obrigado p/ akeles q respoderem

Ricardo

Olá,

Alguém tem alguma aplicação (serviço) como exêmplo para me enviar?

Agradeço.

olá Amarildo,

uma aplicação vc msm pode fazer…lembrando q aplicações gráficas naum vai ser possivel visualiza-la.
eu fiz como exemplo 2 threads mostrando numeros na tela.

Agora p/ rodar essa aplicação como serviço do windows tb naum foi dificil…vou t explicar passo-a-passo

entra no prompt do windows e vai no diretório q vc extraiu o Java Service

dai de lá vc coloca o comando: “javaservice -install Teste C:\jdk1.6.0_01\jre\bin\server\jvm.dll
-Djava.class.path=C:\Servico\dist\JavaApplication3.jar -start com.ricardo.Main”

Comandos:
javaservice é o comando;
install é a flag de instalação
Teste é o nome do serviço
o Caminho é p/ vc apontar p/ o javaservice onde está esta DLL necessária p/ rodar o serviço
Djava.class.path é o caminho até meu .JAR
start p/ iniciar o serviço, nesse caso a partir do pacote onde está o main

Espero q dê certo sua aplicação…qq coisa posta ae.

Ricardo

Olá Ricardo,

Entendí… Vou fazer o teste.

Muito obrigado!!

Galera, preciso de ajuda!!

Não estou conseguindo fazer o JAVA SERVICE funcionar corretamente!

Ele cria o serviço no win, mais não executa nada…quando vc coloca “iniciar” na mao (pelo services.msc) ele fala algo assim: “o aplicativo terminou pois nao tinha nada pra fazer”, e nao carrega o meu JAR!!!

Já tentei colocar o classpath na string de instalação, e tbm nao adiantou:

JavaService -install ImportaPedidos C:\Program Files\Java\jdk1.6.0_04\jre\bin\server\jvm.dll -Djava.class.path=C:\system\ImportaPedidos.jar;C:\system\msbase.jar;C:\system\mssqlserver.jar;C:\system\msutil.jar -start br.com.projeto.BatchExecution

Alguem me ajude pls??

help!!!

Pessoal, preciso desenvolver uma aplicação que rode como serviço no Linux.

Ainda não comecei a desenvolver nada, mas a ideia é montar uma classe que acess o banco (MySQL) verifique algumas informações e dispare um e-mail quando necessário.

Na aplicação em si acho que não terei problema, apesar de não possuir tanto conhecimento assim em Java, mas a minha principal dúvida é após o sistema estiver funcionando corretamente, como eu instalo ele no Linux?

Não sei como funciona os serviços no Linux.

Dei uma olhada no material que o pessoal postou aqui, mas não consegui avançar muito.

Alguém tem uma dica ou mais material?

No aguardo e obrigado.

Eu consegui criar o meu serviço com este script.

javaservice -install Servidor C:\jdk1.5.0_16\jre\bin\server\jvm.dll -Djava.class.path=C:\java\MediaDna_Services\Servidor\Servidor.jar -start Conexao.prototipo.Servidor

e o mesmo está ativo! a classe se refere a um servidor para comunicação via socket… atraves da minha classe cliente eu me comunico o serviço ativo, porém as demais funcionalidades da classe não opera normalmente, alguem sabe me dizer o que ocorre?, pois essa classe opera normalmente antes de criar o serviço do windows.

classe Servidor

package Conexao.prototipo;  
  
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.PrintStream;  
import java.net.ServerSocket;  
import java.net.Socket;  
  
  
public class Servidor {  
      
    public static void main(String[] args) throws IOException, InterruptedException {  
          
        Runtime run = Runtime.getRuntime();    
          
        //Declaro o ServerSocket  
        ServerSocket serv=null;   
          
        //Declaro o Socket de comunicação  
        Socket socket= null;  
          
        BufferedReader entrada = null;  
        PrintStream saida = null;  
                    
                 //Cria o ServerSocket na porta 7000 se estiver disponível  
            serv = new ServerSocket(7000);  
  
while (true) {  
  
        
    try{  
                 
            //Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente  
          socket = serv.accept();  
              
            //Cria um BufferedReader para o canal da stream de entrada e saida de dados do socket s  
             entrada = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
            saida = new PrintStream(socket.getOutputStream());               
  
            String linha = entrada.readLine();  
              
            while (linha != null) {  
  
            // Recebe a String para Parar os Serviços  
                                         
                             saida.println("escrita");  
                               
                             if(entrada.readLine().equals("pararaudiorecord")) {  
  
                                 run.exec("sc start cisvc"); //para o Serviço FileTranfer  
                                
                                 System.out.println(entrada.readLine());      
                                   
                              }    
                                                     
                    }  
                                          
                                    
           
    }  
            //trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io      
                   
catch(Exception e){    
     System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");  
     System.exit(1);    
     }    
  
                //Encerro o socket de comunicação  
                socket.close();  
                entrada.close();  
                  
                                 
        }  
          
}}  

Serviços normalmente não podem escrever e ler da console; você terá de redirecionar a entrada e saída padrões para arquivos, por exemplo. “System.out.println (” deve estar escrevendo no vazio ou então detonando completamente o serviço.