Friday, October 29, 2004

EJB ve JBOSS

JBoss uygulama servisi (application server), J2EE standartını gerçekleştiren, bedava, son zamanlarda oldukça ilgi toplamış olan bir yazılımdır. Serbest yazılım dünyasında önemli bir boşluğu doldurmuştur; İnternet servisi olarak Apaçe, JSP/Servlet için Tomcat, işletim sistemi seviyesinde Linux'tan sonra, EJB tarifnâmesini serbest yazılım dünyasında hayata geçirmek JBoss gurubuna nasip olmuştur.


İlk EJB'leri desteklemek için ortaya çıkan JBoss, artık J2EE katmanlarının (arayüzlerinin) hepsini kodlamış/gerçekleştirmiş, ve bu tam hali ile piyasadaki rakiplerinin karşısına çıkmıştır.

Bu yazımızda JBoss'un kurulması, bir Servlet ve bir oturum EJB'sinin nasıl kodlanıp işletileceğini göreceğiz.

EJB'lerin Mimaride Yerleri

Örnek bir mimari sunduğumuz yazımızda EJB'leri üst arakat katmanında olabileceğini görmüştük. Ayrıca, proje büyüklüğüne göre bu katmanın koyulmasına gerek olmayabileceğinden bahsettik.

Ayrıca bir başka yazıda, sırf Servlet (ve JDO) bazında kodlanmış olan bir J2EE uygulamasının bile ölçeklenmesinin Tomcat ile mümkün olabileceğini gördük.

Peki o zaman, bu es geçilebilen EJB katmanı ne zaman kullanılır olur?

Ölçeklemeyi Servlet seviyesinde değil, EJB'ler üzerinden yapmak için EJB katmanının (üst arakat) eklenmesi mümkündür. Bunun çeşitli sebepleri olabilir; EJB kabının (JBoss gibi) ölçeklenme teknolojisine Tomcat seviyesindekinden daha çok güveniyor olabilirsiniz, ya da JBoss ölçeklenmesi hakkında şirketinizde daha çok bilgi mevcut olabilir, vs. Ya da, servisinize bağlantı kuran teknolojiler sırf tarayıcı değil, görsel olmayan bazı diğer teknolojiler olabilir: Bu durumda oturum takibi için Servlet katmanı kullanılmadığı için, oturum takibi, oturum bilgilerinin kaybedilmeden tutulması, oturuma verilen servisin ölçeklenmesi işleminin görsel ortamdan bağımsız başka bir katmanda yapılması gerekecektir. İşte bu gibi durumlar için JBOSS üzerinde EJB'ler yararlı olur.

Oturum yönetimine gelelim: Eğer EJB'leri bir Servlet tarafından çağırıyorsak, eskiden Servlet oturumu üzerinde sakladiğımız bütün bilgileri artık bir EJB oturum bileşeni üzerinde saklamamız gerekir. Çünkü, artık bütün hafıza/zaman gerektirecek işlemleri yapacak olan, ve bunun sebebiyle tarafımızdan ölçeklenecek servis, EJB servisidir.

Servlet<-->EJB eşlemesini gerçekleştirmek basit olacak. Eğer Servlet'in HttpSession'ı üzerinde EJB oturum bileşenine ait olan göstergeçi saklarsak, Servlet'in ihtiyacı olan bütün oturum bilgilerini artık bu oturum bileşeninden alabiliriz. Ağır işlemleri de EJB'lere geçirirsek, böylece bütün ağır yük, Servlet'ten EJB üzerinde geçmiş olur.

Yazımızın devamında, çok basit bir örnek olaran tek bir Servlet ile tek bir EJB oturum bileşeni kullanımını göreceğiz. Bu örnek sadece ekrana bir mesaj yazacak.

JBOSS kurmak

JBoss sitesinden downloads bağlantısını takip ederek en son JBoss sürümünü indirin. Elinize geçen ZIP dosyasını bir dizinde açın, ve içeriğine gözatın.

Kontrol etmek için, JBOSSDIZINI/bin/run.sh ya da JBOSSDIZINI/bin/run.bat betiğini kullanarak hemen JBoss'u başlatabilirsiniz.

Şimdi, örnek uygulamamızı indirip, istediğiniz dizin altına açın.


Yapmanız gereken tek değişiklik, JBoss'un sonuç dizinini build.xml içinde değiştirmek. Bunun için build.xml içindeki {jboss.dizin} değişkenine JBOSSDIZIN/server/default/deploy değerini girmeniz yeterlidir. (JBOSSDIZIN sizin sabit diskinizde JBoss en üst dizininin nerede olduğuna bağlıdır).

Deploy, gönderim/sonuç dizini anlamına gelir, yani yazdığımız kodların JBoss tarafından işletilebilmesi için paketimizi koymamız gereken yerdir. Paket, J2EE standartına göre JSP/Servlet/Java/EJB kodlarının hepsini içeren .ear dosyasıdır. Ant build.xml betiği bu dosyayı otomatik olarak kodlarımıza göre yaratacak, ve JBoss'a sunacak.

Şimdi örnek dizine komut satırından geçerek, ant komutunu işletin. Kodlar derlenip sonuca gönderilecektir.

Evet! Ufak sitemizi işletmeye hazırız. JBoss, aynen Tomcat gibi 8080 portu üzerinden işlem yapmaktadır. Tarayıcınızı

http://localhost:8080/jboss-ejb-ornek/index.jsp

adresine işaret ederseniz, ilk Servlet/EJB uygulamanızın sonucu görebilirsiniz.


Sıcak Servis (Hot Deployment)

Bu ufak uygulamayı kullanarak, JBoss'u daha yakından tanımanız mümkün. Mesela, sıcak servis (hot deployment) özelliğini kullanarak, JBoss'u indirip kaldırmaya gerek kalmadan, EJB, Servlet kodlarında yapılan değişiklikleri servisin anında işlem sokması mümkün olmaktadır. Buna şahit olmak için, örnek kod üzerinde herhangi bir değişiklik yapıp, JBoss çalışırken ant komutunu işletirseniz, derleme/gönderimden sonra JBoss'un yeni kodları otomatik olarak farkedip (JBoss penceresinden bunu görebilirsiniz) hemen işleme soktuğunu göreceksiniz.

Dosyalar


* Servlet/EJB Örnek Kodları
* JBoss Sitesi

No comments: