EJB Bileşenleri 26/04/2003

Temel EJB Bileşenleri

Bir EJB nin dört temel bileşenleri home interface,remote interface,bean class ve konuşlandırma tanımlayıcısıdır(Deployment Descriptor).

Home Interface

Home Interface EJB örnekleri oluşturmak,bulmak ve silmek iöin gerekli olan metodların tanımını yapmaktadır.Home Interface içerisinde tanımı yapılan metodların bean class içerisinde implement edilen metodlara karşılık gelmeleri gerekmektedir.

Remote Interface

Remote Interface içerisinde EJB nin iş mantığında bulunan metodların tanımı yapılmaktadır.Burada tanımı yapılan metodlar bean clas içerisinde tanımlanmalıdır.Bu arayüz bean metodlarının konteyner tarafından çağırımı için anahtar rolü bulunmaktadır.

Bean Class

Bean class bean in mantığını içermektedir.Remote interface içerisinde tanımlanan ve home interface içerisinde karşılık gelen metod tanımlarının implementasyonu bu sınıfın içerisinde geröekleştirilmesi gerekmektedir.

Konuşlandırma Tanımlayıcısı

Konuşlandırma tanımlayıcısı daima ejb-jar.xml olarak adlandırılmaktadır.KT EJB konteynerine EJB nin tanımını vermektedir.

EJB bileşenlerinin isimlendirilmesi

Eğer EJb nin ismi Demo ise remote interface Demo.java , home interface DemoHome.java , bean class DemoBean.java veya DemoEJB.java ve konuşlandırma tanımlayıcısı ejb-jar.xml olarak adlandırılmalıdır.Bunlardan ejb-jar.xml dışındaki tüm bileşenler EJB nin jar dosyasının altındaki pakette bulunmalı yalnızca konuşlandırma tanımlayıcısı EJB jar dosyasının altında META-INF dizininde bulunmalıdır.

EJB nin konuşlandırılması(Deployment)

Bir Session yada Entity EJB nin konuşlandırılması için yukarıda tanımını verdiğimiz dört bileşen gereklidir.Paket ve META-INF/ejb-jar.xml bşr EJB .jar dosyasına jar edildikten sonra EJB konteynerinin içerisinde 4 kısım yanyana dururlar.

EJB Nasıl Çalışır

EJB konteyner içerisine konuşlandırıldığında , konteyner verilen home inteface ismini isimlendirme dizinine kaydetmektedir.Bir istemci home interace ismine istekte bulunduğunda isimlendirme dizini home interface için bir kütük döndürmektedir.Home kütüğü esasında home interface ile bir ilişkide bulunmaz.Bunun yerine home kütüğü konteyner içerisindeki home interface implementasyonu ile temasa geçer.İstemci home kütüğünü create,remove ve find metodlarını çağırmak için kullanır.create veya find metodları başarı ile çağrıldığında konteyner bean sınıfın bir örneğini oluşturur ve home implementasyonu bir remote kütüğü döndürür.Bu remote interface implementayonuna karşılık gelmektedir.Böylelikle istemci EJB çağrıda bulunmak için remote kütüğünü kullanır.

Kütükler(Stubs) nedir?

Bir kütük RMI (Uzaktan Metod Çağrımı) teknolojisinin bir parçasıdır.Bir istemci istemcinin dışında bulunan bir nesnenin gösterilen metodlarını uzaktan çağırmak için kütükleri kullanır.Kütük , remote nesneden çağrılan metod dönüş değerlerini alarak değeri istemciye döndürmektedir.

EJB ile iletişim

Bir EJB istemcisi çnceki diyagramda belirtilen tüm istemci eylemlerini gerçekleştirmelidir.

JBOSS sunucusu örnek alınarak verilebilecek basit örnekler şu şekildedir.

İsimlendirme sağlayıcı

System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");

System.setProperty("java.naming.provider.url", "localhost:1099");

İsimlendirme Konteksti

InitialContext jndiContext = new InitialContext();

Home kütüğüne bir referans alma

Object reference = jndiContext.lookup("EJBName");

Home kütüğünü referansı kullanarak elde etme

com.dat.ExampleEJB.Home home = (com.dat.ExampleEJB.Home)  PortableRemoteObject.narrow(reference, com.dat.ExampleEJB.Home.class);

Remote kütüğünü elde etme

com.dat.ExampleEJB.Remote remote = home.create();

Ve son olarak bean class örneklemesinden bir metodun çağrılması

remote.businessMethodOne(...);

şeklinde olacaktır.Bu ifadelerin tümünün try ve catch bloklarının çerisine yazılması gerekmektedir.