วันเสาร์ที่ 5 ธันวาคม พ.ศ. 2558

ws part 2 RESTful WebServices on GlassFish server



>> จาก part 1 ที่ผ่านมาผมหาวิธีรันบน Tomcat server ซึ่งต้องใช้จาร์จำนวนมาก + กับต้องเขียน web.xml อีกเล็กน้อยเพื่อลงทะเบียนและประกาศ path ที่จะนำไปสู่ resources (copy วิธีมาจากเน็ต เว็บไหนบ้างจำไม่ได้) คราวนี้จึงหา text อ่าน ถูกใจเนื้อหาจึงนำมาบอกต่อครับ หนังสือชื่อ

Developing RESTful Services with JAX-RS 2.0, WebSockets, and JSON

แหมยาวไปไหน เขียนโดยอาจารย์สองท่าน ก็อย่างว่าทั้งสองเป็นผู้รู้กว้างในวงการ จะไม่อ่านและไม่ใช้ความคิด แนวคิด วิธีการของพวกเขาก็กระไรอยู่ ครั้นจะไปค้นตามเว็บติว หรือหาจากวิธีการหรือเทคนิคในกระดานถาม-ตอบ ก็จัดได้ว่าใช้เวลาสิ้นเปลืองอย่างมาก ไม่รู้ก็ต้องอ่านหนังสือครับ มันมีให้อ่านก็หาเวลาอ่านและทำความเข้าใจ


>> เปิดบทแรกก็จ๊ะเอ๋โค้ดใหม่คล้ายโค้ดเดิมที่เขียนไป ณ part 1 แล้วมันแตกต่างกันตรงไหน? ก็ตรงที่นำเสนอว่าไม่จำเป็นต้องใช้ web.xml มาจัดการลงทะเบียนและประกาศ path ดังที่กล่าวไปน่ะสิ เอ๋? แล้วใช่อะไรล่ะ อ้อใช้ @ApplicationPath วางบนคลาสที่เป็นลูกของ javax.ws.rs.core.Application ตามด้วยการ override เมธอด getClasses เสียใหม่ให้มันรู้จักกับคลาส resource ของเราแทน ป๊ะเจ๋ง!

>> เจ๋งยังไง? ก็ลดโค้ดฝั่ง xml แล้วไปเพิ่มโค้ดฝั่ง java แทนไงล่ะ ก็ยังงงอยู่ดีว่าทำไมถึงเจ๋ง เป็นอันว่าช่างมันเถอะนะ ในที่นี้เรากำหนดให้ path เป็น / ซึ่งหมายความว่าไม่ต้องใส่อะไรนอกจาก / ก็จะทำให้เว็บเซอร์วิสนี้เรียกง่ายขึ้นอีกนิดหน่อย


>> ตัวคลาส resource ที่ต้องเรียกผ่าน uri ก็คือ BookResource ก็ลงทะเบียนให้เรียบร้อย จากนั้นก็ไปเขียนคลาสเจ้ากรรมนี้ ซึ่งเนื้อหาไม่แตกต่างจาก part ที่ผ่านมา

>> สิ่งที่ต้องการจะเสนอคือ เขารันมันบน GlassFish server ไม่ใช่ Tomcat server และในเมื่อ eclipse ของผมยังไม่มี plugin ของ GlassFish (GF) ให้ใช้ เช่นนั้นผมจึงไปที่
- https://marketplace.eclipse.org/content/glassfish-tools
ง่ายๆเลย ลากเจ้าปุ่มที่เขียนว่า install ไปวาง ณ workspace ของเราใน eclipse เดี๋ยวมันจะดาวน์โหลดและถามให้ติดตั้งโดยอัตโนมัติ

>> ผ่านขั้นตอนนี้ไปโดยมันขอ restart eclipse ก็จัดไปตามนั้น เมื่อ eclipse พร้อมใช้เราจึงไปดาวน์โหลด GF runtime มาเก็บไว้ที่เครื่อง ตามลิงค์นี้เลย
- https://glassfish.java.net/download-archive.html
ผมเลือก glassfish-4.1.zip ได้มาแล้วก็แตก zip

>> ปัญหามีอยู่ว่า เมื่อคลิกขวาที่โปรเจ็กค์แล้วเลือกรันโดย server ผลคือ GF มันเอ๋อๆไม่ยอมให้เราไป config GF runtime ให้กับมัน ราวกับว่า eclipse มันมี bug ผมจึงลองวิธีการนี้ครับ
- เปิดแท็บ server (Window > Show View > Other > ค้นหาด้วยคำว่า server)
- คลิกขวาในพื้นที่ของแท็บ server เลือก New > Server

- มองหา GlassFish เลือก GlassFish 4
- จะปรากฏหน้าต่าง New Server ซึ่งจะต้อง config เจ้า server root ให้มองเห็น GF runtime ที่เราได้ไปโหลดมา (ตามภาพประกอบ)

- ส่วน Java Development Kit ก็คือ JDK ของเราที่ติดตั้งไว้ในเครื่อง (GF นี่มันไม่ใช้ JRE แฮะ) เราจึงต้องเพิ่ม VM อีกตัวเข้าไป ให้ยิงไปที่ JDK ของเรา (ตามภาพประกอบ)


- เสร็จจากขั้นตอนเพิ่ม VM ก็อย่าลืมมาปรับค่าของ Java Development Kit นี้ให้เลือก JDK ล่ะ

>> เรื่องของ GF นี้มันสร้าง domain ได้หลายตัว ตอนนี้ไม่ต้องสนใจ กด Next ยาวๆไปแล้ว Finish ได้เลย ทีนี้จึงสามารถคลิกขวาแล้วเลือกรันโดย GF server ได้แล้ว


>> เห็นไหม web.xml ไม่มีอะไรต้องเขียนใส่ (แท้จริงไม่จำเป็นต้องมีไฟล์ web.xml เลยก็ได้)


>> ส่วนนี้เป็นโครงสร้างของโปรเจ็กค์ครับ


>> ทดสอบการัน ... Hello RESTful on GF Server เย้ๆๆ!


>> อัอ สภาพแวดล้อมที่ใช้พัฒนา
- eclipse mars.1 release (4.5.1)
- jdk 1.8.0_65
- สร้างด้วย dynamic web project (module version 3.0) แล้วเปลี่ยนให้เป็น maven project
- implement ws นี้ด้วย jersey 2.0
- GlassFish 4

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

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