วันจันทร์ที่ 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

วันพฤหัสบดีที่ 8 เมษายน พ.ศ. 2553

HTTP method in REST protocol with Dojo's JsonRestStore

มาดูกันว่า dojox.data.JsonRestStore ใช้ HTTP method ไหนทำอะไรบ้าง

  • HTTP GET request to retrieve data

  • PUT request to change items

  • DELETE request to delete items

  • POST request to create new items

JsonRestStore ของ Dojo ทำงานคล้ายกับ Datasource ฝั่ง server การเปลี่ยนแปลงข้อมูลบน JsonRestStore (CRUD) จะส่งการเปลี่ยนแปลงนั้นผ่าน REST ไปยัง server ให้เลย ดังนั้นจึงสะดวกมากที่จะเขียนโปรแกรม CRUD โดยใช้ REST

เบื้องหลัง JsonRestStore นั้นใช้ dojox.rpc.JsonRest ทำหน้าที่ REST service นั่นเอง
ส่วนรายละเอียดและการใช้งานสามารถอ่านเพิ่มจาก RESTful JSON + Dojo Data

วันพุธที่ 7 เมษายน พ.ศ. 2553

หลากหลายวิธีใช้ XHR ข้าม domain ด้วย Dojo toolkit

เกริ่นก่อน เดิมการใช้ dojo.xhr-() น่าจะรวมถึงใช้ XMLHttpRequest ตรงๆด้วย จะไม่สามารถเรียก resource หรือ service ต่าง domain กันได้เช่น

จากหน้า http://foo.com/index.html ต้องการเรียกไปที่ http://bar.com/xxx แบบนี้จะไม่สามารถทำได้

เมื่อมีปัญหาก็ต้องมีทางออก วิธีต่อไปนี้เป็นวิธีแก้ไขสำหรับ Dojo toolkit มีหลายๆวิธีดังนี้

สำหรับจาวาสคริปท์เพียวๆก็น่าจะมีเหมือนกันแต่พอดีใช้ framework นี้อยู่ ใช้จาวาสคริปท์บน framework มันใช้ง่ายดี ไม่ฮาร์ดคอเท่าเพียวจาวาสคริปท์ ที่ต้องกังวลอีกหลายๆเรื่องเช่น cross-browser เป็นต้น