İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır

EJB Çeşitleri

EJB Çeşitleri

Yazılım endüstrisinde Java konusunda en çok sorulan sorulardan birisi, EJB (Enterprise JavaBeans) bileşenlerinin çeşitleri ve aralarındaki farklılıklar.

EJB 1.0 ve 1.1 belirtimlerine göre 2 çeşit EJB bileşeni var. EJB 2.0 belirtimi buna 1 yenisini daha ekliyor:

Oturum Bileşenleri

Oturum bileşenleri ve antite bileşenleri arasındaki en büyük farklılıklardan birisi, bileşenlerin yaşam süreçleridir. Oturum bileşenlerinin hayatları antite bileşenlerine göre çok daha kısa sürer. Sunucunu bilgisayarın ya da uygulama sunucusunun durması halinde, oturum bileşenleri yokolurlar.

Genellikle oturum bileşenleri, kullanıcının oturumuna ya da istemcinin istem-cevap sürecine göre varolurlar. Bu da, oturum bileşenlerinin iki değişik ceşidinin ortaya çıkmasına neden olur:

Karşılaşacağınız ya da geliştireceğiniz oturum bileşenlerinin çoğu durumsuz olacak: EJB kabı (EJB sunucusu) istemciden gelen isteme göre yeni bir durumsuz oturum bileşeni yaratır (ya da görevlendirir). Bileşen isteme cevap verir, gereken işlemleri yapar ve istemciye cevap gönderir. Bu işlemlerden sonra EJB kabı durumsuz oturum bileşenini yokeder (ya da görevden alır). Bu senaryoya göre durumsuz oturum bileşeninin yaşam süresi birkaç salise ya da birkaç saniyeyi geçmez.

Bu bileşenlere Oturum Bileşeni denmesinin asıl nedeni, durumlu oturum bileşenlerinin kullanıcının oturumuna bire bir bağlantılı olmasıdır. Durumlu oturum bileşenleri, kullanıcı adına, uygulamaya ve kullanıcıya ait bilgileri oturum süresince taşırlar. Web katında HTTP oturumları tarafından sağlanan teknik, EJB katında bize oturum bileşenleri tarafından sağlanır.

Hangi tip olursa olsun, oturum bileşenleri kullanıcıyla iletişim kurmak için kullanılırlar. Genel mimariye göre, istemciyle antite bilesenleri arasinda ya da istemciyle veritabani arasinda yer alirlar. Bu yüzden bu tür bileşenler bilgi işlem mantığını yansıtmak için kullanılırlar. Oturum bileşenleri, kullanıcı adına, antite bileşenleri ve/veya diğer oturum bileşenlerini kullanarak görevlerini yerine getirirler. Görevlerine örnek vermek gerekirse aşağıdaki görevler gerçek hayattan örnekler olabilirler:

Antite Bileşenleri

EJB bileşen mimarisinin bize sağladığı en büyük kolaylıklardan birisi Antite bileşenleri yaratmak. Oturum bileşenleriyle en büyük farkları, Antite bileşenleri saklanabilir/depolanabilir nesnelerdir ve veri tabanına (ya da başka bir çeşit veri deposuna) yüklenebilirler. Kendilerini veri deposuna nasıl saklayacaklarını bilirler.

Böylece, iş veri modeli (business data model) antite bileşenleri kullanılarak yaratılabilir. Bu tür bileşenler, basit ya da karmaşık iş verisi belirtirler. Aşağıda sıraladıklarım antite bileşenlerine gerçek hayattan alınan örnekler olabilirler:

Gördük ki, antite bileşenleri, oturum bileşenlerinden çok farklılar. Oturum bileşenleri iş ve iş akışı belirtirler. Kullanıcı tarafından başlatılırlar ve kullanıcı işini bitirince yokolurlar. Öte yandan, antite bileşenleri iş verisi belirtirler. Karmaşık bilgi işlem ya da iş akışı algoritması içermezler. Yaratıldıkları iş kavramı varolduğu sürece bir tür veri deposunda saklanabilirler. Kullanıcı uygulamayı kullanmayı bıraksa bile antite bileşeni varolmaya devam ederler.

Veri tabanına ya da veri deposuna geçirilişleri konusunda antite bileşenleri ikiye ayrılırlar:

Mesaj Bileşenleri

Artık mesajlama (Messaging) teknolojileri EJB'ler aracılığıyla da kullanılabilirler. EJB 2.0 belirtimiyle EJB bileşenleri ailesine katılan "Mesaj Bileşenleri", mesaja dayalı ortakat yazılımlarının (MOM - Message Orieted Middleware) sağladıkları olanakları, EJB bileşenleri katında sunarlar. Mesaj bileşenleri JMS'e (Java Messaging Service) dayalı olarak tasarlanmışlardır. JMS'in ardındaki pirensip, JDBC ya da JNDI'daki ile aynıdır. JMS, farklı mesaja dayalı ortakat yazılımlarına aynı kodu kullanarak standart bir sekilde ulaşmayı sağlar.

Yerine getirdikleri görevler durumsuz oturum bileşenlerine çok benzer. Tabi ki en büyük fark, bilgi işlemin zamanuyumsuz (asynchronous) olarak yapılması.

Örnek

Son olarak EJB bileşenlerinin gerçek hayatta nasıl kullanılabileceğine bir örnek vereyim. Ben genellikle bütün kitaplarımı Amazon üzerinden satın alıyorum. Diyelim ki, bugün, EJB bileşenleri hakkında bir kitap satın almak istiyorum. Amazon'un sitesine gidip, arama motorunu kullanarak "Enterprise JavaBeans" kelimelerine cevap veren kitapların bir listesini istiyorum ve uzun bir liste geliyor önüme. Bu kitaplardan birini seçiyorum ve alış-veriş sepetime Ed Roman'ın "Mastering Enterprise JavaBeans" kitabını koyuyurum. Alış-verişimi tamamlayıp, seçtiğim kitabı satın almak için "Satın almak"a basıyorum. Kredi kartı verilerimi ve sipariş adresimi verip siteyi kullanmayı bırakıyorum. 2 dakika sonra, Amazon'dan bir elektronik ileti alıyorum. İleti bana şöyle diyor: "Siparişiniz kaydedildi, herhangi bir değişiklik yapmak için aşağidaki adrese gidiniz.".

Bu senaryoya göre, basit bir tasarımdan yola çıkarsak, kitap, sipariş, kredi kartı, adres, antite bileşenleri olarak tasarlanabilirler. Karşıma çıkan liste, veri tabanında kayıtlı kitaplardan oluşuyor. Ben siteyi kullanmayı bıraktıktan aylarca sonra bile, veri tabanında saklanmaları sayesinde, antite bileşeni olarak aynı kitapları görebilirim. Ya da bana sonradan gönderilen ileti, siparişime bir bağlantı sunuyor. Demekki siparişim veri tabanına kaydedilmiş durumda ve eğer ben istersem, EJB kabı tarafından veri tabanından alınarak antite bileşeni olarak uygulama tarafından kullanılacak.

Arama yapmak, kitapları listelemek, kredi kartı izni için bankaya bağlanmak, siparişi onaylamak gibi fiiller oturum bileşenleri olarak tasarlanabilirler.

Siparişi onaylayan elektronik ileti göndermek ise bir mesaj bileşeni kullanılarak tasarlanabilir. Sistem benim verdiğim adrese bir ileti gönderilmesini istemini JMS aracılığıyla mesaja dayalı ortakat yazılımına iletiyor ve cevabı beklemiyor. Mesaja dayalı ortakat yazılımı, sistem ne zaman uygunsa o zaman bana iletiyi gönderiyor.

Kısaca

Bu kısa yazımda EJB bileşenlerinin değişik tiplerine değindim ve gerçek hayatta kullanılan uygulamalardan örnekler verdim. Daha detaylı bir yazı, bileşenlerin yazılım farklılıklarını da ortaya koymak için yazılabilir. Bunu da bir sonraki yazılarımdan birine bırakıyorum.

Yazımı, oturum ve antite bileşenlerinin farklarından birini anlatan ve beğendiğim bir örnekle bitirmek istiyorum. Eğer bileşenleri, telefonla yapılan bir iletişime uyarlarsak, bir oturum bileşenini yoketmek telefonu kapatmak gibidir. Bir daha ahizeyi kaldırıp aynı numarayı arayabilirsiniz. Ama bir antite bileşenini yoketmek, telefonda konuştuğunuz kişiyi öldürmek gibidir, aynı numara bundan sonra cevap vermez.

Kaynaklar

İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır