EJB nedir?

EJB (Enterprise Java Beans), java sınıflarının belli kurallara göre oluşturulması ve geniş amaçlı uygulamalarda kullanılması, yani belli bir amaca yönelik, belli bir işi görecek metotlardır. Dağıtık uygulamalarda kullanılan, sunucu taraflı ve tekrarlı bileşenlerdir. EJB'ler sayesinde dağıtık mimarilerde yer alan farklı istemciler ortak problemlere aynı bileşenlere erişerek aynı kod parçası ile çözüm bulurlar. Basit bir tanım yapmak gerekirse:EJB tüm uygulama sunucularında çalışabilen bir bileşen (component) modeldir. Buradaki “tüm” kelimesinin aslında çok önemli bir manası vardır. Bunu ileride açıklayacağım. Bu tanımda iki farklı kavram vardır: “Uygulama Sunucusu” ve “bileşen model”.

Bileşen (component) model

Bileşen model tüm sunucu-taraflı nesnelerin uyması gereken bir standarttır. Tanımı genişletmek gerekirse, uygulama sunucularıyla uygulama geliştiriciler arasındaki yapılması gereken işleri kesin çizgilerle ayıran bir belirtimdir (specification). Aslında buna bir çeşit kontrat da denilebilir. Çünkü hem uygulama sunucusu satıcısı, hem de EJB geliştirici bu belirtime uyacaklarını garanti etmişlerdir. İki taraftan birinin buna uymaması durumunda geliştirilen sistem ya hiç çalışmaz, ya da sorun çıkartır. Bu belirtim en son şekliyle EJB sitesinden indirilebilir. Peki uygulama geliştiriciler ile uygulama sunucularının görevleri nelerdir? EJB belirtimine göre uygulama sunucuları bazı düşük seviyeli servisleri sunucu tarafta çalışan nesnelere sağlamalıdır. Bunların bazılarını örnek olarak vermek gerekirse:

• İsimlendirme (naming)
• Dağıtık nesne teknolojileri (RMI,RMI-IIOP,CORBA vs.)
• Süreklilik (persistence)
• Nesne havuzu (instance pooling)
• Hareket (transaction)
• Eş zamanlı kullanım (concurrency)
• Güvenlik (security)

Yukarıda belirtilen servisler her zaman yazılımcıların başını ağrıtmıştır. Çünkü bu servislerin gerçekleştirimi (implementation) gerçekten zordur. Uygulama sunucularının ortaya çıkışının temel nedeni de burada yatmaktadır:Yazılımcıyı alt seviyedeki servislerle uğraşmaktan kurtarmak ve tamamen mantığına (business logic) yoğunlaştırmak. Burada tanımını yaptığımız bileşen model kavramının birçok avantajları vardır. Bunları çeşitli katagorilere ayırırsak: Sistem geliştirme hayat devresi kısalır. Şirket gerçekleştirim evresini çok çabuk gerçekleştirir. Bunun şirketler için anlamı maliyetin düşürülmesidir. Çünkü maliyet sistemin gerçekleştirim süresi ile doğru orantılıdır.

ejb

Resimde istemci tarafından bulunan nesneler gerçek nesneler değil, sunucu tarafındaki nesnelere ulaşmayı sağlayan vekil (proxy, stub vs.) nesnelerdir.

EJB kullanılarak bir uygulama geliştiriminin hızlı olmasının sebebi EJB bileşenlerinin sadece iş akışını kontrol etmesi ve alt-seviye servislerin gerçekleştirilmesini (isimlendirme,süreklilik,dağıtık nesne teknolojileri vs.) uygulama sunucusuna bırakmasıdır. EJB bileşenleri uygulama sunucusundan bağımsızdır. Şirketlerin en çok başını ağrıtan konulardan bir tanesi de yazılımın sadece bir yazılım şirketi tarafından sağlanması ve SGHD (Sistem Geliştirme Hayat Devresi)’nin en uzun evresi olan bakım (maintenance) evresinde sadece bu şirkete bağımlı olunmasıdır (vendor lock-in). EJB bu durumu bileşen model ile ortadan kaldırır. Çünkü bileşen model yazılımcıya bileşenlerin nasıl oluşturulacağını gösterdiği gibi uygulama sunucularının bu bileşenlere hangi servisleri sağlayacağını da gösterir.

Yani bir uygulama sunucusu satıcısı EJB belirtimini gerçekleştirirse aynı belirtime uygun yazılan bir bileşen de bu uygulama sunucusunda çalışır. Uygulama sunucularının uyumluluklarını Sun MicroSystems test eder ve testi geçenlere J2EE-uyumlu (J2EE-certified) sertifikası verir. Sonuç olarak J2EE uyumlu “tüm” uygulama sunucuları EJB bileşenlerini sorunsuz çalıştırır. Eğer bir uygulama sunucusunun performansını beğenmiyorsanız başka bir J2EE uyumlu uygulama sunucusunda EJB bileşenlerinizi rahatlıkla çalıştırabilirsiniz. Uygulama sunucuları arasındaki farklar ise genellikle performanstan ve sağladıkları sistem geliştirme araçlarının kalitesinden kaynaklanmaktadır. Geriye dönecek olursak daha önce kullandığımız “tüm” kelimesinin J2EE-uyumlu olan uygulama sunucularını belirttiğini anlayabiliriz.

EJB kendi içerisinde üçe ayrılır

1. Session Bean: İhtiyaca yönelik yazılmış ve özel ifadeler kullanan Java sınıflarıdır. Kendi içerisinde "stateless" ve "stateful" olmak üzere iki alt başlığa ayrılır. Stateless Bean, istemci hakkında bilgi tutmaz. Stateful Bean ise tam tersi istemci hakkında bilgi tutar ve gerektiğinde istemcinin bir kopyası sunucu üzerinde tutulur.

2. Message Driven Bean: JMS API’ nin bean ortamına dökülmüş hali diyebiliriz.

3. Entity Bean: Bu bean türüne en iyi örnek veritabanındaki tabloların Java sınıflarına karşılık gelmesidir.

EJB'nin avantajları nelerdir?

En önemli metadata tekniğinin getirilmiş olmasıdır. Ayarlar bir XML dosyasına yazılır ve daha sonra EJB container tarafından okunur. Böylece EJB oluşmuş olur. Eğer hem metadata hem de XML kullanılırsa öncelik XML yöntemindedir. Container, EJB bileşenlerini oluşturan, birbirine bağlayan ve sunan yapıdır. Farklı markaların kendilerine ait containerleri olabilir; fakat hiçbir şekilde temel belirtimler dışına çıkılamaz. Böylece yazılan bir EJB her yerde çalışabilir. İyi yazılmış bir EJB esnektir ve taşınabilir yapıdadır.

Yorumlar

Bu sayfa ait yorum bulunamadı. İlk yorum yapan siz olun.

Yorum ekle

Vazgeç