EJB - Enterprise Java Bean Architecture
การสร้าง Stateless Session การ implement Stateless Session Developer จะต้องประกอบไปด้วย
1. remote interface
2. home interface
3. Class สำหรับการ implement Interface
4. ส่วนที่เป็น client (JSP or servlet) เพื่อเรียกใช้งาน session bean
ตัวอย่าง Entity Bean
credit : http://www.itmelody.com/tu/ejb.htm
EJB Component.
1. Session Bean เป็น Bean ที่ใช้สำหรับการทำงานตาม business logic ต่างๆ หรือ อาจเรียก session bean ว่าเป็น bean สำหรับให้บริการ
session bean แบ่งเป็น 2 ประเภทคือ
1.1. stateless session สำหรับ EJB ประเภทนี้ Application server จะไม่เก็บ State ของ client ไว้ ทำให้การทำงานใช้ทรัพยากรน้อย แต่ละ instance ของ session bean จะให้บริการ client ได้หลาย client
1.2. statefull session สำหรับ EJB ประเภทนี้ Application server จะเก็บ State ของ client ไว้ และไม่มีการใช้ instatnce ร่วมกันของ Client การให้บริการ session bean กับ client จะเป็น 1 ต่อ 1 ซึ่งจะแตกต่างจาก stateless ที่ยอมให้ Client มีการใช้ instance ของ session bean ร่วมกันได้
2. Entity Bean เป็น EJB ที่ใช้สำหรับการทำงานเกี่ยวกับ Data ซึ่งจะทำหน้าที่เป็นตัวแทนของข้อมูลในฐานข้อมูล Entity Bean แบ่งออกเป็น 2 ประเภท คือ
2.1. CMP - Entity Bean (Container-Managed Persistence Entity Bean)
2.2. BMP - Entity Bean (Bean-Managed Persistence Entity Bean)
1. Session Bean เป็น Bean ที่ใช้สำหรับการทำงานตาม business logic ต่างๆ หรือ อาจเรียก session bean ว่าเป็น bean สำหรับให้บริการ
session bean แบ่งเป็น 2 ประเภทคือ
1.1. stateless session สำหรับ EJB ประเภทนี้ Application server จะไม่เก็บ State ของ client ไว้ ทำให้การทำงานใช้ทรัพยากรน้อย แต่ละ instance ของ session bean จะให้บริการ client ได้หลาย client
1.2. statefull session สำหรับ EJB ประเภทนี้ Application server จะเก็บ State ของ client ไว้ และไม่มีการใช้ instatnce ร่วมกันของ Client การให้บริการ session bean กับ client จะเป็น 1 ต่อ 1 ซึ่งจะแตกต่างจาก stateless ที่ยอมให้ Client มีการใช้ instance ของ session bean ร่วมกันได้
2. Entity Bean เป็น EJB ที่ใช้สำหรับการทำงานเกี่ยวกับ Data ซึ่งจะทำหน้าที่เป็นตัวแทนของข้อมูลในฐานข้อมูล Entity Bean แบ่งออกเป็น 2 ประเภท คือ
2.1. CMP - Entity Bean (Container-Managed Persistence Entity Bean)
2.2. BMP - Entity Bean (Bean-Managed Persistence Entity Bean)
1. remote interface
2. home interface
3. Class สำหรับการ implement Interface
4. ส่วนที่เป็น client (JSP or servlet) เพื่อเรียกใช้งาน session bean
ตัวอย่าง Entity Bean
Home.java package test; import java.rmi.*; public interface Home extends javax.ejb.EJBHome { public String hello() throws RemoteException; public int add(int a, int b) throws RemoteException; public HomeObj findByPrimaryKey(String a) throws RemoteException, FinderException; } HelloObj.java package test; public interface HelloObj extends javax.ejb.EJBObject { } HelloBean.java package test; import javax.ejb.*; public class HelloBean extends com.caucho.ejb.AbstractEntityBean { public String ejbHomeHello() { return "Hello, world"; } public int ejbHomeAdd(int a, int b) { return a + b; } public String ejbFindByPrimaryKey(String key) throws FinderException { throw new FinderException("no children"); } } Servlet Implementation The client in this example is a servlet. As with other EJBs, the client gets the home interface using JNDI. Since it's only necessary to do the JNDI lookup once, the servlet caches the home object as a servlet variable. package test.entity.home; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.ejb.*; import javax.naming.*; public class HomeServlet extends GenericServlet {
Home home; public void init() throws ServletException {
try {
Context env = (Context) new InitialContext().lookup("java:comp/env");
home = (Home) env.lookup("ejb/home");
} catch (Exception e) {
throw new ServletException(e);
}
} public void service(ServletRequest req, ServletResponse res) throws IOException, ServletException {
PrintWriter pw = res.getWriter();
try {
pw.println("message: " + home.hello() + "");
pw.println("1 + 3 = " + home.add(1, 3) + "");
pw.println("7 + 1 = " + home.add(7, 1) + "");
} catch (Exception e) {
throw new ServletException(e);
}
}
} |
credit : http://www.itmelody.com/tu/ejb.htm