สมัครสมาชิก   เข้าระบบ  
ประกาศ: UKM 14 ที่ ม.มหาสารคาม เลื่อนเป็นวันที่ 9-10 ม.ค. 2552
การก่อสร้างซอฟต์แวร์
वीर
อ่าน: 331
แชร์ controllers และ models ข้ามโปรแกรมโดยใช้ Tapestry 5

 ผมเขียน Web application แบบ MVC อยู่หลาย project แต่ว่าในหลายๆ project นั้น ก็ดันต้องใช้ controller และ model ร่วมกัน ที่เห็นเป็นสีเขียนใน diagram ข้างล่างนี่เอง. ถ้าเอาตัวอย่างจริงๆ controller กับ model ที่ว่าก็คือ Yaitron dictionary นี่เอง. มี code ที่ใช้ JPA เขียนสำหรับ query database แล้วทำ DAO มาครอบอีกที ให้ query แบบ abstract ขึ้นหน่อย. 

some control and some model in MVC (diagram) 

ท่าเดิมที่ผมเคยใช้ก็คือแค่ copy & paste โปรแกรมส่วน controller กับ model ไปวางในอีก project แล้ว แก้ไข้  configuration ของ dependency injection หน่อย ไม่ว่าจะเป็น Spring หรือ Tapestry-IOC ก็ตาม. ก็เป็นอันใช้ได้.  แต่พอแก้ทีก็ต้องเอามาปะใหม่เหนื่อยเหมือนกัน. :-P

ท่าแก้ท่านึงที่ทำได้คือ แยก controller กับ model ที่ว่าไปไว้อีก package เลย. เวลาจะใช้ก็แค่ copy jar เข้ามา หรือว่าแก้  dependency ใน pom.xml. แต่ว่าก็ยังมีปัญหาว่าต้องมาแก้ configuration ของ dependency inject เองอยู่ดี. 

หลังจากเล่น Tapestry 5 ไปสักพักก็พบว่ามีท่าแก้ ที่ลอกเลียนมากจาก tapestry-hibernate. เราสามารถไปเขียน configuration แยกไว้ต่างหาก. แล้วบอกให้ Tapestry-IOC ไปอ่าน configuration หลายอันได้.  เพื่อความเท่ยิ่งๆ ขึ้นไป เราสามารถเขียนบอกไว้ใน MANIFEST.MF เลยว่าต้องการให้ Tapestry ไป load configuration ไหนขึ้นมาบ้าง. และเท่ขึ้นไปอีกเราก็จะไปเขียนไว้ใน pom.xml.

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Tapestry-Module-Classes>
                                org.kunyit.yaitron.services.YaitronModule
                            </Tapestry-Module-Classes>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

 

พอทำแบบนี้แล้ว เวลาเรา include jar ของเราไปใน Tapestry project  แล้ว YaitronModule ก็จะถูก load ขึ้นมาโดยทีไม่ต้องมานั่งแก้เอง.

 

 

 

หมวดหมู่: เรื่องทั่วไป
คำสำคัญ: tapestry  tapestry5  package  mvc  sharing  controller  model
สร้าง: พ. 18 ก.ค. 2550 @ 21:13   แก้ไข: พ. 18 ก.ค. 2550 @ 21:13   ขนาด: 4831 ไบต์
ความคิดเห็น
ไม่มีความคิดเห็น
ชื่อ:
อีเมล:
IP แอดเดรส: 38.103.63.56
  เรียกใช้งานตัวจัดการข้อความ
ข้อความ:
 
รหัสสุ่ม: (ใส่รหัสสุ่มที่แสดงไว้ด้านบน)
  ยกเลิก
การพัฒนาซอฟต์แวร์