Jar dosyasını Windows Servisi Olarak Kullanma


Merhabalar,

Bu yazımda Jar dosyasını Windows servisi olarak nasıl tanımlayabileceğimizi anlatacağım.
UYARI : Windows tarafında Java Yüklü Olmalıdır. Link

Öncelikle Java SE ile basit bir uygulama yazalım… >Uygulamamız bir txt dosyasına Her 1 saniye de bir “Selam !” yazsın ve bunu Windows servisi olarak tanımlayalım.Hadi başlayalım ;

Netbeans IDE mizi açıp Java Application formatında yeni bir proje oluşturalım.

Yeni bir package oluşturalım.ben package ismine “com.serkankaya” ismini verdim.Daha sonra bir java dosyası oluşturalım ve bu java dosyasının kodunu aşağıdaki gibi kodlayalım ;

package com.serkankaya;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Timer;
import java.util.TimerTask;

/**
 *
 * @author Serkan KAYA
 */
public class WindowsService {

    public static void main(String[] args) {
        class SelamYaz extends TimerTask {

            public void run() {
                DosyayaEkle("Selam !\n");
            }
        }
        Timer timer = new Timer();
        timer.schedule(new SelamYaz(), 0, 1000);
    }

    private static void DosyayaEkle(String metin) {
        try {
            File dosya = new File("C:\\test\\ServiceTestLog.txt");
            FileWriter yazici = new FileWriter(dosya, true);
            BufferedWriter yaz = new BufferedWriter(yazici);
            yaz.write(metin);
            yaz.close();
        } catch (Exception hata) {
            hata.printStackTrace();
        }
    }
}

Netbeans üzerinde “Clear and Build Project” butonuna tıklattığınızda JAR dosyamız oluşturulacak ve projemizin bulunduğu klasör içerisinde “DIST” klasörü içerisinde proje ismimiz ile JAR dosyamızı görebileceğiz.

JAR dosyamızı oluşturduk ve bir kenara koyduk …

Şimdi ise Windows Servisimizi Eklemek ve Windows Üzerinde JAR dosyamızı servis olarak çalıştıracak olan “Apache Commons Daemon” Yazılımımızı aşağıdaki linkten zip olarak indirelim ;

https://www.apache.org/dist/commons/daemon/binaries/windows/

C:/test dizinini oluşturup indirdiğimiz zip içerisindeki dosyaları bu klasöre atalım.

Daha önce oluşturduğumuz JAR dosyamızı yine bu klasöre atalım.

şimdi BAT dosyası oluşturacağız bunun için c:/test dizininde Yeni Metin Belgesi oluşturup ismini ve uzantısını “install-windows-service.bat”  şeklinde değiştirelim.Dosyayı düzenleyip aşağıdaki kodları aşağıdaki kodları da kendinize göre düzenleyip kaydedin ;

"C:\test\prunsrv.exe" //IS//SelamService^
 --DisplayName "SelamService"^
 --Description "Selam Yazan Servisdir."^
 --Startup=auto^
 --Install="C:\test\prunsrv.exe"^
 --Jvm="C:\Program Files (x86)\Java\jre1.8.0_171\bin\client\jvm.dll"^
 --Classpath "C:\test\WindowsService.jar"^
 --Environment="PATH=C:\Program Files (x86)\Java\jre1.8.0_171\bin"^
 --StartClass="com.serkankaya.WindowsService"^
 --JavaHome="C:\Program Files (x86)\Java\jre1.8.0_171"^
 --StartPath=C:\test\^
 --JvmOptions="-XX:+HeapDumpOnOutOfMemoryError"^
 --StartMode=jvm

Bu dosyayı kaydedip çıkalım.Servis yüklenmesi için BAT dosyamızı hazırlamış olduk.

Şimdi Servisimizi durdurabilmek için ikinci bat dosyamızı oluşturalım ismine ve uzantısına “stop-force-selam-service.bat” ismini verip düzenleyelim.

taskkill /F /FI "SERVICES eq SelamService"

Bu adım ile servisimizi zorlayarak durdurmak için bat dosyamızı yazmış olduk kaydedip çıkalım.

Şimdi ise servisimizi silmek için 3. bat dosyamızı oluşturalım.Bu dosyanın ismi ise “delete-selam-service.bat” olsun.
İçeriği aşağıdaki gibi olsun ;

"C:\test\prunsrv.exe" //DS//SelamService

Bu dosya ile servisimizi silmek için bat dosyamızı hazırlamış olduk.Kaydedip çıkalım.

install-windows-service.bat dosyamızı yönetici olarak çalıştıralım.Servisler diğer adı ile hizmetleri açtığınızda SelamService adında servisi eklendiğini göreceksiniz.
Servisi bir kereliğe mahsus başlatın ve arkanıza yaslanın 🙂 c:/test dizininde ServiceTestLog.txt adında bir dosyanın oluştuğunu ve her saniye “Selam !” yazdığını göreceksiniz 🙂

Servisi durdurmak için stop-force-selam-service.bat dosyasını yönetici olarak çalıştırdığınızda servis durakcaktır.

Servisi silmek delete-selam-service.bat dosyasını yönetici olarak çalıştırmanız yeterli olacaktır.

Umarım faydalı olmuştur 🙂

Serkan Kaya
Full Stack Java Developer

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir