Spring Boot Uygulamasını Windows Servisi Olarak Çalıştırmak

Metin Alnıaçık
2 min readJan 2, 2023

Projemizin pom.xml dosyasına web bağımlılığını ekliyoruz.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

finalName tag’ı ile oluşturulacak jar dosyasının adını belirliyoruz.

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
<finalName>sba-as-windows-service</finalName>
</build>

configuration ve executable tag’larını kullanarak oluşturulacak jar dosyasını çalıştırabilir bir jar haline getiriyoruz.

@GetMapping("/")
public String status() {
return "Server is running";
}

Sunucunun durumunu kontrol etmek için bir endpoint ekliyoruz.

String timeAndStatus = "";

@Scheduled(fixedDelay = 10000)
public void backup() {
LocalDateTime now = LocalDateTime.now();
String pattern = "dd-MM-yyyy HH:mm:ss";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
timeAndStatus = "Son yedekleme zamanı: " +
now.format(formatter) + "<br/>" + "Başarı durumu: BAŞARILI";
}

@GetMapping("/info")
public String showInfo() {
return timeAndStatus;
}

backup metodu ile 10 saniyede bir yedek alıyoruz. showInfo metoduyla da son yedekleme zamanını ve başarı durumunu yazdırıyoruz.

Maven clean install komutlarını çalıştırarak jar dosyasını oluşturuyoruz.

Third party iki tane dosyaya ihtiyacımız vardır.
Kaynak: https://github.com/winsw/winsw/releases
WinSW-x64.exe ve sample-minimal.xml dosyalarını bilgisayarımıza indiriyoruz.

Bu iki dosyayı ve oluşturmuş olduğumuz jar dosyasını aynı klasörün içine koyuyoruz.
sample-minimal.xml dosyasının adını WinSW-x64.xml olarak güncelliyoruz.

WinSW-x64.xml dosyasında bazı değişiklikler yapıyoruz.

<service>

<id>sba-as-windows-service</id>

<name>Spring Boot Application as Windows Service</name>

<description>Auto Backup System</description>

<executable>java</executable>
<arguments> -jar sba-as-windows-service.jar</arguments>

</service>

Command Prompt’u yönetici olarak çalıştırıyoruz. İlgili dosyaların bulunduğu klasörün konumuna girdikten sonra WinSW-x64 install komutu çalıştırılır. Eğer Windows servisi olarak ekleme işlemi başarılıysa aşağıdaki mesajı verecektir.

2023–01–03 00:45:05,986 INFO — Installing service ‘Spring Boot Application as Windows Service (sba-as-windows-service)’…
2023–01–03 00:45:05,998 INFO — Service ‘Spring Boot Application as Windows Service (sba-as-windows-service)’ was installed successfully.

Servisler bölümünden eklemiş olduğumuz servisi kontrol edelim.

Windows Servisleri

WinSW-x64.xml dosyasındaki bilgilerin bu ekrandaki karşılıkları

  • id: servisin adı
  • name: servisin görünen adı
  • description: servisin açıklaması

Yukarıdaki Start the service yazan kısımdaki Start butonuna basarak servisi çalıştırırız. Status kısmı Running olarak değişecektir.

Windows Servisleri

Servisi test edelim.

http://localhost:8080/ adresine girdiğimizde
Server is running…
ifadesini görürüz.

http://localhost:8080/info adresine girdiğimizde
Son yedekleme zamanı: 03–01–2023 01:04:02
Başarı durumu: BAŞARILI

Şeklinde bir bilgi görüntülenecektir.

Ek bilgi: eğer eklemiş olduğunuz windows servisini kaldırmak isterseniz WinSW-x64 uninstall komutunu kullanabilirsiniz.

Örneğin tamamına github adresimden ulaşabilirsiniz.

İyi günler,
Bol kodlamalar :)

--

--