วันศุกร์ที่ 11 มกราคม พ.ศ. 2551

วิธีการแก้ไขปัญหาเมื่อเราไม่เจอ JNDI Name On RAD 6.0

เป็นวิธีการดูเป็น Step น่ะครับ ว่าควรจะตรวจสอบอะไรบ้าง ถ้ามันมีปัญหา Exception JNDI Name Not found. น่ะครับ โดย ทำดังนี้

1. ต้องตรวจสอบก่อนว่าอันไหนไปเรียก JNDI Name ตัวนั้น (Web Project, EJB Project, Project Client)
  • วิธีการตรวจสอบนั้นให้ตรวจสอบจาก SystemOut.log ดูที่เป็น Error จาก Package ของเราแล้วดูลงไปเรื่อยๆ ก็จะรู้ว่ามาจากตัวไหน
2. หลังจากนั้นก็ไปดูที่ Reference ของตัวที่เรียกว่ามีการสร้างไว้หรือยัง โดย

  • ถ้าไปเรียก EJB จะมี Config สองส่วน (อยู่ใน XML File ที่ Tab Reference)ดังรูป



    • จากรูป Name ข้างบนจะเป็น JNDI Name ที่เราใช้เรียกใน Project นั้นครับ ตรวจสอบดูว่าเขียนชื่อถูกหรือเปล่า
    • อันล่างตรง WebSphere Binding ตรงนี้คือ JNDI Name ที่ไปเรียกที่ Websphere ชื่ออะไร คือ JNDI Name ที่อยู่ใน EJB Project นั่นล่ะครับ (โดยปกติเราจะไม่ต้อง Config อันนี้จะดึงค่าจาก JNDI Name ใน EJB Project ให้เลยน่ะครับ ยกเว้นกรณีที่เรามีการแก้ไข JNDI Name ที่ EJB Project มันจะไม่ Auto แก้ให้ต้องมาแก้ไขเองน่ะครับ)

  • ถ้าไปเรียกอย่างอื่น เช่น Datasource ก็มี Config สองส่วนเหมือนกัน ดังรูป


    • ส่วนบนก็ชื่อที่เราใช้เรียกใน Project ของเรา
    • อันล่างตรง WEbsphere Binding ตรงนี้เป็นที่เราไปเรียก JNDI Name ที่ Server ครับ (อันนี้เราต้องเขียนค่าลงไปเองครับ ไม่มี Default ค่าให้)

3. หลังจากตรวจดูจากข้อสอง เสร็จแล้ว
  • ถ้าเป็น Web Project ให้ Save แล้ว Restart Application ถึงจะใช้งานได้ครับ
  • ถ้าเป็น EJB Project ให้ Deploy EJB แล้วก็จะใช้งานได้ครับ
4. หลังจากทำเสร็จแล้วควรจะไม่มีปัญหา JNDI Name Not Found แล้วนะครับ


หมายเหตุ
  • สำหรับ EJB ไปเรียก EJB ด้วยกัน ใน EJB Project เดียวกันก็ต้อง Config Reference เหมือนกันนะครับ ถึงจะเห็น
  • ทุกครั้งที่ Config พวกนี้ ถ้าเป็น EJB ต้อง Deploy ใหม่ทุกครับ สำหรับ Web Project ตั้อง Restart Application ทุกครั้ง