Servlet Lifecycle

Merhaba arkadaslar , bu yazımızda Servlet Lifecycle konusuna deginicez. Servlet’lerin yaşam döngüsüne bakınmış olucaz. Başlayalım

* Her canlı doğar , yaşar ve ölür . Servlet’lerimizde doğar(Servlet instance) , yaşar(Servlet service) ve ölür(Servlet Destroy)

Servlet Lifecycle’de gerçekleşen olaylar

Bir Servlet’in yasam döngüsü 5 adımdan ibarettir ;

  1. Servlet sınıfının yüklenmsi
  2. Servlet objesinin oluşturulması
  3. init methodunun çağrılması
  4. service methodunun çağrılması
  5. destroymethodunun çağrılması

 

 

Servlet-Life-Cycle

 

* İlgili Servlet class’ımız Web Contaıner tarafından bulunur ve yüklenir. Servlet Contaıner iligli servlet’i projemiz için önemli bir konfigurasyon dosyası olan deployment descriptor (web.xml) de arar. Eğer iligli Servlet bulunamaz ise 404 not found gibi bir hata ile karsılasırız.

* Daha sonra Servlet’imizin bir objesi olusturulur. Unutmayalım ki Servlet objesi sadece bir ddefa olusturulur.

* Sıradaki adım da ise init() methodu cagrılır. init() methodu Servlet’i ilk kullanıma hazırlar. Bu method servlet yaşam döngüsü içerisinde sadece bir defa çağrılır. init() methodu tamamlandıgında Servlet’imiz artık istekleri karsılamaya hazıdır.

 

* service() methodu ile beraber Servlet istekleri işler. service() methodu gelen HTTP methodu tipine göre Servletimizde buluna doXXX() methodunu çağırır. Unutmayalım ki her bir istek aynı servlet üzerinde farklı thread’larda çalışır. service() methodu iki obje barındırır. Bunlar ; request ve response objeleridir. Bu objeler ilgili doXXX() methoduna çağrılırken parametre olarak  yollanır.

* Son olarak destroy() methodu ile Servlet’imiz ölür . Servlet’in kullandıgı kaynaklar serbest bıraklılır . Bu methodunda servlet yaşam döngüsünde sadece birkez çağrıldıgını unutmayalım.

Destroy methodu ile ilgili Trick ;

* destroy() methodu şu durumlarda çağrılır ;

  • Contaıner yada applicaton kapandıgında.
  •  Contaıner bellek sıkıntısı olustuguna karar verdiginde(Servlet yasam dongusu tamamıyla Servlet Contaıner’in elindedir).
  • Servlet uzun süre request alamadıgında.

 

Yazımızda dikkat etmemiz gereken birkaç noktayı belirterek yazımızı sonlandıralım;

  1. Servlet’in yaşam döngüsünden Servlet Contaıner’ı sorumludur.
  2. Servlet init() methodu çalışmasını tamamlayana kadar istekleri karşılayamaz.
  3. Servlet’in yaşam döngüsünde ; servlet class’ın yüklenmsi , servlet’in ilk kullanımına hazırlanması ,init() methodu ve destroy() methodu sadece bir kez çağrılır.
  4. Servlet objesi bir kez olusturulur ve her request alındıgında aynı Servlet objesi üzerinde işlem yapılır. Örneğin ; A istegi threadA , B istegi threadB ile aynı servlet üzerinde çalışır.

* Yazımız burada sonlandı arkadaslar. Bir sonraki yazıda ServletConfig ve ServletContext konularına deginicez insaAllah.

* Mutlu kalın , kod’la kalın ve bol bol Çay için

~ Alican Akkus

 

1124 Total Views 2 Views Today