Exista situatii in care se doreste executarea unei aplicatii Java de indata ce sistemul porneste, fara a fi nevoie sa interveniti in vreun fel. Pentru a face acest lucru, o modalitate este sa rulati acea aplicatie ca serviciu Windows. Presupunem ca avem un pachet executabil myApp.jar si dorim sa il executam ca serviciu Windows.

O posibilitate este folosirea proiectului Open Source Java Service Launcher, care contine 2 fisiere foarte importante: jsl.exe si jsl.ini, pe care trebuie sa le copiati in acelasi folder cu aplicatia myApp.jar.
Vom edita fisierul jsl.ini in asa fel incat sa ii spunem lui jsl.exe cum sa lanseze jar-ul executabil (cmdline= -jar myApp.jar). Putem de altfel sa configuram locatia JVM, directorul de lucru al aplicatiei care porneste ca serviciu, locatia unde va fi redirectat output-ul (include erorile) si alte lucruri de genul asta.

De indata ce s-a configurat jsl.ini se poate rula aplicatia folosind comanzile:
- jsl.exe -debug (Aceasta comanda va rula aplicatia in consola. Se poate folosi pentru a verifica daca totul este in regula cu jsl.ini dupa configurare)
- jsl.exe -install (comanda creaza un serviciu windows care pointeaza catre jsl.exe)
De indata ce se porneste serviciul windows, acesta va lansa jsl.exe care va rula la randul lui myApp.jar. In momentul in care se opreste serviciul, jsl va chema System.exit() in aplicatie, so any shutdown hooks that you configured will be called by default. It is really easy.

O alta modalitate de a crea un serviciu este de a crea un exe folosind open source-ul JSmooth. Acesta are o interfata grafica de tip wizard cu ajutorul careia se poate crea un wrapper pentru aplicatie, specificand ca acel wrapper sa fie de tip serviciu windows. Se creaza astfel un fisier executabil care se poate executa folosind unul din urmatorii argumenti:
- install: pentru a instala serviciul
- remove: pentru a dezinstala serviciul

O sa incerc sa ma documentez in ceea ce priveste si a treia metoda de a crea un serviciu windows si probabil ca daca o sa-l pricep o sa scriu si un post. Pana atunci va las pe voi sa studiati. Va pot da insa un link foarte util: Java Service Vrapper