วันจันทร์ที่ 19 เมษายน พ.ศ. 2553

EJB 3.0 @Stateless @EJB @Resource and JNDI clarity

EJB 3.0 @Stateless @EJB @Resource and JNDI clarity
การกำหนดชื่อของ Service
  • property name เทียบกับ ejb-jar.xml คือ ejb-name

  • property mappedName ใช้กำหนด global JNDI name
ตัวอย่าง
@Stateless // name() defaults to "A2"
public class A1 implements A { ... }

@Stateless(name="A2", mappedName="A2Global") // force product-specific JNDI name to "A1Global"
public class A2 implements A { ... }

การเรียกใช้
  • property name เทียบกับ ejb-jar.xml คือ ejb-ref-name ไว้สำหรับใช้เรียกผ่าน java:comp/env

  • property beanName เทียบกับ ejb-jar.xml คือ ejb-link

  • property mappedName เทียบกับ ejb-jar.xml คือ mapped-name ไว้เรียก global JNDI name
ตัวอย่าง
ภายใต้ application เดียวกัน(อยู่ภายใต้ ear เดียวกัน)
@EJB
private A a;

@EJB(beanName="A2")
private A a;

ต่าง application กัน
@EJB(mappedName="A1/local") // for JBoss
private A a;

@EJB(mappedName="A2Global")
private A a;

หมายเหตุ mappedName เป็น product-specific JNDI name ฉะนั้นระวังด้วยหาก application ต้องการความสามารถ portability ซึ่งใน EJB 3.1 ที่มีการกำหนดเรื่อง portable JNDI name ไว้ แนะนำให้ใช้ property lookup แทน

อ้างอิง
forums.sun.com
What is the relationship between @EJB and ejb-ref/ejb-local-ref?
Partial Deployment Descriptors

ไม่มีความคิดเห็น:

แสดงความคิดเห็น