EJB – Session Bean – Message Driven Bean – Entity Bean

Session Bean (Stateless-Stateful -Singleton):
cikone
EJB’ lere interfaceler aracılığı ile ulaşılır. Yani kullanıcı sadece interfacede tanımlı metotlara erişebilir. @Local ,@Remote adinda iki tane notasyonumuz var bunlar isimlerindende anlasilacagi gibi @Remote uzaktan çağrılan işlemler için , @Local notasyonu ise localden çağrılan işlemler için kullanılacak olan bir EJB interfacesi olduğunu tanımlıyor.

package ejbbeans;

import java.util.List;
import javax.ejb.Remote;
import pojo.UrunPojo;

/**
*
* @author http://www.turkishh.com
*/

@Remote

public interface TesterInterfaces {

// interface clasimizda iki tane methodumuz var

// Bu methodumuz bize urunlerimizin oldugu List donderiyor
public List<UrunPojo> getDeneme();

//Bu methodumuz ise bizden bir tane urun nesnesi aliyor
public void setDeneme(UrunPojo deneme1);
}

Burada interface sinifimizi tanimliyoruz ve iki tane methoduz olacak birisi list donderecek birisi ise urun nesnesi alip implements ettigimiz sinifimizda listemize ekliyecek.

UrunPojo sinifizimi yazalim .

package pojo;
/**
*
* @author http://www.turkishh.com
*/
public class UrunPojo {

String urunAdi;
String urunAciklama;
int urunFiyat;

public String getUrunAdi() {
return urunAdi;
}

public void setUrunAdi(String urunAdi) {
this.urunAdi = urunAdi;
}

public String getUrunAciklama() {
return urunAciklama;
}

public void setUrunAciklama(String urunAciklama) {
this.urunAciklama = urunAciklama;
}

public int getUrunFiyat() {
return urunFiyat;
}

public void setUrunFiyat(int urunFiyat) {
this.urunFiyat = urunFiyat;
}
}

Simdi ise is yapan methodlarimizin oldugu intefacemizi implement eden SessionBean sinifimizi olusturalim .

package ejbbeans;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateful;
import pojo.UrunPojo;

/**
*
* @author http://www.turkishh.com
*/
@Stateful
public class DenemeSessionBean implements TesterInterfaces {

//Urun tipnde bir tane listemiz var
List urunler;

public DenemeSessionBean() {
urunler = new ArrayList();
}

//Implements edilen bize urun listesi donderen method
@Override
public List getUrun() {
return urunler;
}

//Implements edilen bizden bir tane urun nesnesi alip
//urunler listesine dolduran methodumuz.
@Override
public void setUrun(UrunPojo urun) {
urunler.add(urun);
}
}

Simdi ise jsf sayfasi kullanicagimiz icin bir tane controller sinifimizi (Managed Bean) olusturalim
package controller;

import ejbbeans.TesterInterfaces;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import pojo.UrunPojo;

/**
*
* @author http://www.turkishh.com
*/
@ManagedBean(name = “TesterBeans”)
@SessionScoped
public class TesterBean {

// En basta EJB’ lere interfaceler aracılığı ile ulaşılır demistik bunun icin
// @EJB notasyonu ile interface sinifimizdan referans
// aliyoruz ki methodlarimizi kullanabilelim
@EJB
TesterInterfaces bean;
UrunPojo urunPojo;

public TesterBean() {
urunPojo = new UrunPojo();
}

// Birtane urun nesnemizi alip listimize ekleyen
// ejb methodumuza gonderiyoruz
// ve sayfamizi refresh yapiyoruz
public String setTable() {
bean.setUrun(urunPojo);
return “index.xhtml”;
}

//Burada ise jsf sayfamizdaki tabloya listemizdeki urunleri yazdiracayiz
public List getTable() {
return bean.getUrun();
}

public UrunPojo getUrunPojo() {
return urunPojo;
}

public void setUrunPojo(UrunPojo urunPojo) {
this.urunPojo = urunPojo;
}
}

ve jsf sayfamizi olusturuyoruz .

Facelet Title

SessionBean Ornegi

@Stateful

Simdi arkadaslar bu ornekte notasyonumuz olarak @Stateful kullandik bu notasyonun nasil davrandigini tarayicimiz uzerinden bakalim..Ilk once chrome ile aciyorum ve bir tane urun ekliyorum ,ekledikten sonra mozillada aciyorum sayfayi ve su sekilde gorunuyor.

1

Simdi 2 tarayiciyada ayri ayri birer tane urun daha ekliyorum ve ciktisi soyle oluyor..

2

Goruldugu gibi her istemciye ayri ayri bean olusturuluyor . Stateful notasyonunu daha iyi anlayabilmeniz icin resimde gostermeye calisalim ..

ejb-konteyner1

@Singleton

Bir baska notasyonumuz @Singleton nasil davrandigina deyinecek olursak singleton notasyonu bir tane sabit bean tutar ve her istemciye ayni bean yollar .. Simdi kodumuza geri donerek @Stateful notasyonunu @Singleton olarak degistirelim ve tarayicilarimizda nasil farkliliklar var gorelim .Ayni islemi tekrarliyalim chrome ile bir tane kitap ismi ekleyelim ve mozilla ile eklemiyelim bakalim ne olacak..

4

Bu sefer isler degisti   :)  mozilladan urun eklemedigim halde bana ejb konteyner ayni bean’i gonderdi .. Yani durum assagidaki resimde anlattigim  gibi oldu ..

singletonbean

@Stateless
Simdi gelelim @Stateless notasyonumuza bu notasyonumuzda su sekilde calismaktadir , uygulamaya baglanan tum istemciler erisilebilen  bean cesitidir. Istemci nesneyi biraktiktan sonra baska bir istemci icin hazir hale gelir . Bu notasyonu kullandigimizda uygulama sunucunun ozelliklerine bagli olarak konteynerde hazirda bekleyen bir kactane bean olusturur  , istemci istek yolladiginda konteynarda hazirda bean varsa onu yollar yoksa eger yenisini olusturup yollar istemciye.

stateless

Kaynak………….
http://www.turkishh.com/programlama/ejb-session-bean-stateless-stateful-singleton-kullanimi/

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s


%d blogcu bunu beğendi: