Bu yazımda daha eli yüzü düzgün bir session bean örneği anlatmaya çalışacağım. Öncelikle EJB(Enterprise Java Beans)’ lerin sunucu taraflı bir J2EE bileşeni olduğunu biliyoruz. O zaman bu örnekte sunucuya bir EJB bileşeni yükleyip sonra bunu yine aynı sunucu üzerinde bir servlet kodunda kullanacağız. Önce EJB sınıflarımız.
package com.farukbozan.ejb;import javax.ejb.Local;
@Local public int thisYear(); } |
EJB’ lere interfaceler aracılığı ile ulaşılır. Yani kullanıcı sadece interfacede tanımlı metotlara erişebilir. @Local ile bunun localden çağrılan işlemler için kullanılacak olan bir EJB interfacesi olduğunu tanımlıyor. Örnek üç metot tanımlıyoruz. Sıra geldi bunu kullanacak EJB sınıfına.
package com.farukbozan.ejb;import java.util.Calendar; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.ejb.Stateless; @Stateless private Calendar calendar; @PostConstruct @PreDestroy @Override @Override @Override } |
EJB sınıfı belirlenen interface kullanan ve bununla beraber bazı özel imler kullanan Java sınıflarıdır. Yakından inceleyecek olursak; sınıfımız arayüzü uyguluyor ve @Stateless ile de bunun bir stateless EJB olduğunu belirtiyoruz.Daha sonra arayüzdeki metotları override ediyoruz. Bu metotların yanı sıra @PostConstruct ve @PreDestroy ile işaretlenen iki ayrı metot var. Bunlar arayüzde tanımlı değil; fakat amacımız EJB sunucuya yüklendikten sonra ve sunucudan çıkarılırken bu özel iki metodu çalıştırmak. Ekran çıktılarına bakarsınız sonucu göreceksiniz. Sıra geldi bu EJB’ yi çağıracak, kullanacak servlet koduna.
package com.farukbozan.ejb;import java.io.IOException; import java.io.PrintWriter; import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MainServlet extends HttpServlet { @EJB protected void processRequest(HttpServletRequest request, HttpServletResponse response) @Override @Override } |
Klasik servlet kodlarına göz attıktan sonra gelelim özel kodlarımıza. İlk dikkat çeken @EJB imi. Bu im ile işaretlenen arayüz bize, bir EJB örneğine ulaşmaya çalıştığımızı söylüyor. Ayrıca dikkat etmeniz gereken nokta arayüz ile sınıfa ulaşıyoruz. Direkt olarak sınıf ile ilgilenmiyoruz. Dolayısıyla new operatörünü de kullanmıyoruz. Sağolsun sunucu bunu bizim yerimize yapıyor. Geriye kalan sadece metotları kullanmak oluyor.
Bol Java’ lı günler dileğiyle…
2 Responses
Eclipse ile ejb projesi oluşturmaya çalıştığımda bu bahsedilen dosyaları hangi folder lar altında oluşturmalıyım, oluşturduğum halde import dosyalarını tanımıyor ne yapmalıyım, en azından eclipse veya netbeans üstünden anlatırsanız sevinirim, paylaşım için teşekkürler
Öncelikle projenin EJB projesinden emin olun. Ayrıca bazı EJB sürümleri arasında fark olduğu için yukarıda yazdığınız gibi import ifadelerini tanımayabilir. Projenin kendi başına EJB projesi olması yeterli değil bunun yanı sıra projeye EJB Bean projesi de eklemeniz gerekebilir. İlk uygun zamanımda size daha detaylı yardımcı olmaya çalışacağım. İyi çalışmalar…