A porcaria do Windows não faz isso?! Não diga!

Artigo originalmente publicado no Lost in the e-Jungle

Windows é um ótimo SO para jogar no lixo!

Recentemente topei com um problema interessante. Na verdade são dois problemas envolvendo duas porcarias de software: Windows e Java.

Graças a preguiça da Red Hat, a versão para Windows do JBoss Operations Network não funciona direito quando usamos as versões x86-64 do Windows e do JDK 1.6. Isso porque os agentes requerem o uso de um wrapper que funciona como front-end para o JBoss poder rodar como serviço e esse wrapper só funciona com a versão 32 bits da JVM (Java Virtual Machine)… Existe uma versão 64 bits do wrapper, mas ela não acompanha o JBoss ON (por que não é gratuita!!). Então eu tive a idéia mais óbvia do mundo: Vou colocar o batch rhq-agent.bat como serviço!

Well… É mais fácil falar do que fazer… Segundo a documentação da própria Microsoft, existia um programinha pra fazer isso no Windows 2000. Você tem que instalar o programinha, levar uma DLL junto e o seu arquivo .BAT (e, se bobear, mexer em um monte de lugares no registro)… Uma complicação do caralho!

Olha só como isso é feito no Linux:

  1. Crie um script em /etc/init.d para iniciar, parar, reiniciar e pegar o status do serviço;
  2. Crie dois links simbólicos em /etc/rc#.d (# é o runlevel). Um dos script tem o nome do formato Snn<nome> e o outro Knn<nome>, onde <nome> é o nome do script que vocẽ colocou em /etc/init.d. O valor de “nn” é a ordem com que o serviço vai ser executado.

Assim, um link S99abcd é executado antes de S99zebra. E S98zebra é executado antes de S99abcd. A mesma ordem é obsevada nos arquivos com nome começados com K.

Para sua informação: “S” significa “Startup” e “K” significa “Kill”.

Voilà! Serviço instalado e pronto para rodar. Para fazer com que um executável ou script seja executado sob um usuário específico (já que o script sempre será executado sob as credenciais do root), altere o seu script em /etc/init.d colocando as suas chamadas assim:

su -l usuario -c "comando"

No Windows, depois do 2000, rodar batches ou scripts como serviços parece ser algo impossível de fazer.

Ô ambientezinho de merda, sô!

Update:

Estou pensando em construir meu próprio wrapper

Anúncios

2 comentários sobre “A porcaria do Windows não faz isso?! Não diga!

  1. Amigão, estou com um problema desses em um cliente, mas no meu caso eu não uso o JON e sim o RHQ, no windows consegui até criar o serviço, mas ele não abre a porta, 16xxx e não conecta no servidor, estou apanhando muito, será que você teria uma solução para isso.
    Obrigado.

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s