สมัครสมาชิก   เข้าระบบ  
ประกาศ: UKM 14 ที่ ม.มหาสารคาม เลื่อนเป็นวันที่ 9-10 ม.ค. 2552
การก่อสร้างซอฟต์แวร์
वीर
อ่าน: 184
Tapestry 5 จะ load module ไหนบ้าง
ในกรณีที่เราใช้ TapestryFilter ที่ถูกเรียกจาก servlet container โดยที่ระบุไว้ใน web.xml. ปกติแล้วจะมี module ของ Tapestry ถูก load ขึ้นมาจำนวนหนึ่ง. ผมเกิดสงสัยขึ้นมาว่าแล้ว module ไหนถูก load บ้าง. ก็เลยพยายามแกะดู. module ที่เห็นถูก load แบบ hard code เลยก็คือ TapestryModule ชื่อฟ้องขนาดนี้ ตามหลักฐานใน TapestryAppInitializer.

อีก module นึงก็คือ module ประจำ app ของเรา เช่น ถ้า app ของเราชื่อ "app1" แล้ว module ก็จะชื่อ "App1Module". Tapestry รู้ชื่อ app ของเราได้อย่างไร? คำตอบคือชื่อ app ได้มาจาก <filtername> ใน web.xml ยกตัวอย่างเช่น <filter-name>app1</filter-name>. แล้ว package ของ app ของเราหละ? ก็ใส่มาใน web.xml เหมือนกัน เช่น <param-value>org.example.mypkg</param-value>.

อีกจุดนึงคือเมื่อเพิ่ม tapestry-hibernate เข้ามา Tapestry รู้ได้ไงว่า ต้องไป load org.apache.tapestry.hibernate.HibernateModule มา? ผมพยายามจะหาดูว่าแอบไป hard code ไว้ที่ไหนหรือเปล่า แต่ก็ไม่เจอ. ไล่ไปไล่มาก็พบว่า Tapestry จะ load module ตามที่กำหนดไว้ใน META-INF/MANIFEST.MF โดยดู property: "Tapestry-Module-Classes". แต่ว่าหาใน source tree ของ tapestry-hibernate ก็ไม่เจอ MANIFEST.MF เลย. ที่ไม่เจอก็เพราะว่า <manifestEntries> เข้าไปอยู่ใน pom.xml ของ tapestry-hibernate เรียบร้อยแล้ว.

อาจจะมีการ load module อื่นๆอีก แต่ตอนนี้ผมอยากรู้แค่นี้ ก็เลยไม่หาต่อแล้ว. จริงๆ แล้วเราสามารถจะเขียน application โดยไม่ต้องรู้ก็ได้ว่า module ไหนจะถูก load ขึ้นมาบ้าง. แค่รู้่ว่า module ของเราที่จะถูก load แน่ก็คือ "<ชื่อ app> + Module" ก็พอแล้ว. ถ้าสร้าง project จาก org.apache.tapestry.quickstart นี่ module นั้นก็จะถูกสร้างมารอให้เราไปแก้อยู่แล้ว. แต่ว่าผมอยากรู้นิ. :-P
หมวดหมู่: เรื่องทั่วไป
คำสำคัญ: tapestry  apache tapestry  module  loading  tapestry 5
สร้าง: จ. 16 ก.ค. 2550 @ 15:04   แก้ไข: จ. 16 ก.ค. 2550 @ 15:04   ขนาด: 3268 ไบต์
ความคิดเห็น
ไม่มีความคิดเห็น
ชื่อ:
อีเมล:
IP แอดเดรส: 38.103.63.56
  เรียกใช้งานตัวจัดการข้อความ
ข้อความ:
 
รหัสสุ่ม: (ใส่รหัสสุ่มที่แสดงไว้ด้านบน)
  ยกเลิก
บันทึกอื่นๆ
การพัฒนาซอฟต์แวร์