Desenvolvi um serviço SMTP e estou utilizando o Java Service Wrapper para roda-lo como um serviço do OS.
Esse serviço possui um terminal console (uma Thread que lê os comandos e interpreta-os e executa conforme desejado).
Situação: Rodando o serviço sem instalar, executando apenas o App.bat onde ele inicia o serviço com o terminal, mas se eu instalar ele, perco o acesso ao terminal que eu criei. Problema: Gostaria de instalar o serviço e poder resgatar o terminal a hora que eu quiser, melhor ainda, se possível acessa-lo remotamente, como o serviço ficará rodando no servidor, eu possa verificar os processos de negociação remotamente.
Já procurei na documentação mas não achei nada.
No site tem alguns exemplos de instalação e de confiuração do wrapper.conf, mas não ajudou muito.
Imagino que eu tenha que implementar corretamente alguns métodos que ele pede para serem implementados quando setamos na classe onde tem o método main a interface WrapperListener. Um desses métodos me parece sugestivos para a solução que procuro que é o controlEvent que recebe um int como parâmetro.
Um serviço do Windows ou um daemon do Unix, por definição, não podem ser acessados diretamente via console (ou então via GUI, no caso do Windows).
É necessário ter um outro programa para poder efetuar a tal monitoração.
O Service Control Manager (que é a parte do Windows que inicia, encerra e pausa serviços) não prevê envio de comandos.
Dica: veja como o James (http://james.apache.org), que é um servidor SMTP/POP3/IMAP funciona. Ele tem uma thread separada que funciona em uma porta separada, que usa protocolo semelhante ao Telnet para ser acessado. Ele pode ser instalado como serviço, porque o acesso à interface de monitoração é via socket, não via terminal. Então o tal “outro programa” que mencionei é o velho e bom Telnet.
Imaginei algo parecido com isso. Criar uma outra aplicação que acesse o serviço via Socket, aí talves entraria alguma funcionalidade daquele método que mencionei o controlEvent. Acredito que ele deve funcionar apenas localmente.
Voltando pra solucão do thingol. Criando uma outra aplicação ou até mesmo utilizando o telnet, como o serviço deverá agir quando varias solicitações forem feitas? Dando um exemplo mais concreto:
Máquina A, quer visualizar o processo de negociação
Máquina B também que visualizar.
O serviço deverá fazer um broadcast para todos os IPs da rede ou registrar as solicitações e enviar apenas para essas máquinas?