Java Uygulamalarını Windows Service olarak Kullanmak

Batuhan Düzgün tarafından yayınlanmıştır 30. May 2012 02:42

 Merhaba arkadaşlar bu yazıda sizlere hazırlamış olduğunuz Java projelerini Windows Service şeklinde nasıl çalıştırabileceğinizden bahsedeceğim. Bilindiği üzere Java ile Windows entegrasyonu zor ve dönüşüm isteyen bir süreçtir. Birçok Java uygulaması veya Java tabanlı işlemler için Windows tarafında ek kütüphaneler ve uygulamalar kullanılır. Tamda bu noktada Java uygulamalarını nasıl Windows Service halinde kullanıp geliştiribiliriz diye düşünmüş olabilirsiniz. Bu sorunun cevabını bu yazıda elimden geldiğince açıklamaya çalışacağım.

Java ve Windows Service ?

Java uygulamaları export edilirken .JAR uzantılı bir yapıda verilir. Windows’ta C# veya başka bir dil ile gerçekleştirilen uygulamalar export edilirken  .EXE uzantılı dosyalar üretir. Aynı zamanda Visual Studio sürümlerinde (Microsoft’un  süper bir IDE’sidir)  C# veya Visual Basic gibi dillerde Windows Service uygulaması hazırlanabilmesi için destek verilmektedir. Bu konuda Eclipse IDE içinde varsayılan bir destek yoktur. Bazı kütüphaneler eklenerek bu başarılıabilir. Bu işi çözüme kavuşturan kütüphanelerin ismi  “Wrapper” olarak geçmektedir. “Tanuki  Software” firmasının sunmuş olduğu wrapper çözümü son derece başarılı ve esnektir. Aşağıdaki linkten bilgisayarınıza uygun olan sürümü indirilebilirsiniz.

http://wrapper.tanukisoftware.com/doc/english/download.jsp#stable 

Ardından sıkıştırılmış dosya içinde yer alan dosya uygun bir dizine çıkartılır. Mesela “C:\” dizinine olabilir. Ardından bu klasör içinde yer alan “lib” klösüründe yer alan  “wrapper.jar” dosyasını Java projesine external  JAR olarak eklemek gerekir. Bu noktadan sonra yeni bir Java yaratılıp devam edilecektir.

Yeni bir Java Projesi Açmak ...

Eclipse IDE’de yeni bir Java projesi açılır. Bu konuda eksiği olan arkadaşlar Java kategorisindeki diğer makalelerden faydalanabilirler. Projeye sağ tıklanıp aşağıdaki şekildeki gibi yeni bir JAR kütüphanesi eklenir.

  
“Configure Build Path” yaptıktan sonra aşağıdaki pencereden “wrapper.jar” dosyasının bulunduğu dizine gidilir ve kütüphane proje entegre edilir.
 
 
Aşağıda “wrapper.jar” dosyasının bulunduğu dizin görünümü verilmiştir.
 
  
Projeye ”main” metodu içeren bir sınıf eklenir  ve “WrapperListener” interface’den kalıtım aldırılır ve abstract olan metodları  “override”  edilir.
 
Yukarıdaki gibi metodlar eklenir. Burada önemli olan metodlar “start” ve “stop” metodlarıdır. Bu metodlar ile Java uygulaması Windows Service uygulaması olarak kullanıldığında başlatma ve durdurma işlemlerini yapar. Örnek projede log tutan ve log tutma sistemini çalıştıran sınıflar eklenir. Aşağıda bu sınıflara yer verilmiştir.
FileOperations Sınıfı ... 
 

Ardından log tutma işlemi ayrı bir Thread ile çalıştırılacaktır.

LogWriter Sınıfı ...

  
Son olarak ” main” metodunun bulunduğu sınıfa ait yapı aşağıdaki gibi doldurulmuştur.
  
 

Yukarıda main metodu içinde “WrapperManager “ sınıfı ile start metodu çağrılır. Böylece yazılımcı tarafından override edilmiş olan start metodu çağrılır. Bu metodda ise loglamayla ilgili Thread start edilir. Aynı şekilde stop metodu içinde Thread sonlandırma işi yapılır.

Uygulamayı Build ettikten sonra  “Export” diyerek uygulama  “Runnable JAR”  halinde çıkarılır. Daha sonra Wrapper’ın bize sağladığı “.bat” uzantılı dosyalar ile JAR dosyasının Windows Service olarak eklenmesi sağlanacaktır. Aynı şekilde bu bat dosyaları aracılığıyla yüklü olan Windows Service “UnInstall”  edilebilir.

Wrapper’ı sıkıştırılmış dosyadan çıkarılmış olan dizine gidilir. Burada yer alan “bin” klasörü içine “Export” edilmiş olan JAR dosyası konur.

JAR Dosyasının Export Edilmesi ...

Projeye sağ tıklanır ve uygulama için yeni bir Java Application yaratılır. Projenin main metodunun bulunduğu sınıf başlangıç olaak verilir. Daha sonra projeye sağ tıklanıp yeni bir JAR Export edilir. Bunlar için detaylı bilgi aşağıdaki linkte mevcuttur.

http://www.batuhanduzgun.net/post/2012/05/25/Java-Uygulamalarc4b1nc4b1-JAR-Dosyasc4b1na-Donusturme.aspx

Java Uygulamasının Windows Service Olarak Yüklenmesi

Bu adımda artık JAR halinde olan projeyi Wrapper’ın  “.bat” uzantılı program parçalarıyla yaratılır. Aynı zamanda wrapper config dosyasında bazı ayarlamalar yapılır. İlk olarak varolan JAR dosyasını  wrapper’ın çıkarıldığı dizine gidip, orada yer alan “bin” klasörü içine konulur. Ardından aşağıdaki gibi wrapper config dosyası düzenlenir. Config dosyası “Conf” klasörü altında “wrapper.conf” dosyası yer almaktadır.
  
  
Yukarıdaki gibi “JLogger.jar” adlı dosya  “bin” klasörü içine yerleştirildi. Daha sonra config dosyası açılır ve aşağıdaki gibi düzenlenir. Config dosyasında aşağıda önemli olan yerler şunlardır.

İlk kırmızı halka içine alınmış olan kısımda Java projesinde “main” metodunu barındıran sınıfın ismi yazılır. Bu sınıf bir package altında ise tam yolu yazılmalıdır. Örneğin : “com.batuhan.MainClass” gibi.

Ardından projede kullanılan JAR kütüphaneleri var ise sırayla onların bulunduğu dizin verilir. Genelde wrapper altında bir klasörde toplamak ve pathleri oradan düzenlemek mantıklı çözümdür.
 

Ardından config dosyasını geri kalanı düzenlenir. Aşağıda bununla ilgili örnek verilmiştir. Bu düzenlemede ise Windows Service’in görünür ismi,  tanımlama bilgisi ve servis ismi gibi parametreler düzenlenir. Ben aşağıdaki gibi kendime göre isimlendirmeler yaptım.

Config dosyası ayarları bittikten sonra aşağıdaki gibi Windows Service’in yüklenmesi işlemi yapılır. Bunun için wrapper içindeki “bin” klasörüne gidilir ve  “InstallTestWrapper-NT.bat” adlı bat dosyası çift tıklanarak çalıştırılır. Problem çıkan bilgisayarlarda  “Yönetici Olarak Çalıştır” yapılarak çalıştırılabilir.

Ardından “Bilgisayarım >> Yönet >> Servisler” yolu takip edilir ve servisin yüklenip yüklenmediği kontrol edilir.

Görüldüğü üzere servis yüklenmiştir.Ardından sağ tıklayıp Windows Service start edilir. Ardından “C:\log.txt” dizini kontrol edilir. Aşağıda görüldüğü gibi Java tabanlı Windows Service uygulaması çalışmaya sağlıklı bir şekilde başlamıştır.

 
Evet, Wrapper ve Java tabanlı projelerin Windows Service olarak çalıştırılmasıyla ilgili yazımın sonuna gelmiş bulunuyorum, umarım zevkle okuyabileceğiniz bir yazı olmuştur. Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
Bilgisayar Mühendisi
Endüstri Mühendisi 

Currently rated 3.0 by 10 people

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Java

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  July 2018  >>
MoTuWeThFrSaSu
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

Yazıları geniş takvimde göster