Developing Java Web Services with JAX-WS using Netbeans 6

July 21, 2008 by admin
Filed under: Java, Web Services 

เอกสารนี้สร้างขึ้นมาเพื่อแนะนำวิธีการสร้าง เว็บเซอร์วิสแบบ JAX-WS โดยใช้ Netbeans เวอร์ชัน 6.0, 6.1 ซึ่งเป็นวิธีการที่ง่าย และรวดเร็วมาก โดยในเอกสารนี้จะใช้ GlassFish v2 เป็น Application Server ซึ่งสามารถประยุกต์ใช้ ร่วมกับ Apache Tomcat web server 6.0 ได้ และเมื่อสร้างเสร็จเรียบร้อย สามารถสร้างไคลเอนท์ภาษาต่างๆ มาเรียกใช้ได้เลย
ตัวอย่าง ของเซอร์วิสที่สร้างขึ้นมา เป็นเครื่องคิดเลขอย่างง่าย โดยในเบื้องต้น เพื่อให้การเรียนรู้ไม่ซับซ้อนมากนัก ขอเสนอเฉพาะการบวกเลขเพียงอย่างเดียว


สิ่งที่จำเป็นเบื้องต้น

  • Netbeans IDE เวอร์ชัน 6.0/6.1 ดาวน์โหลดได้จาก www.netbeans.org
  • Java Developer Kit ( JDK ) เวอร์ชัน 5.0,6.0
  • GlassFish application server v2 หรือ Tomcat web server 6.0

การสร้างเว็บเซอร์วิส ( Creating a Web Service )
1. เปิดโปรแกรม Netbeans และทำการสร้างโปรเจค ใหม่ขึ้นมา โดยเลือก Choose File > New Project จะมีหน้าต่างสำหรับเลือกรูปแบบของโปรเจค ในที่นี้เลือก Enterprise => EJB Module แล้วคลิกปุ่ม Next

2. จะมีหน้าต่างสำหรับการสร้าง EJB Module ขึ้นมาดังรูป ในช่อง Project Name ให้ใส่ชื่อของโปรเจคที่ต้องการ เช่น CalculatorWSApplication แล้วคลิกที่ปุ่ม Next

3. ที่หน้า Server and Settings ระบบจะให้เลือกเซิร์ฟเวอร์ที่ต้องการใช้ในการรันเซอร์วิส ในที่นี้ใช้เซิร์ฟเวอร์ที่ติดมากับ Netbeans 6.0/6.1 ได้เลย นั่นคือ GlassFish v2 แล้วค่อยคลิกที่ปุ่ม Finish

4. ทำการสร้างเว็บเซอร์วิส โดยคลิกขวาที่ CalculatorWSApplication เลือก New => Web Service ดังรูป

5. จากนั้นในหน้าต่าง Name and Location ให้ตั้งชื่อเว็บเซอร์วิส (Web Service Name ) เช่น CalculatorWS และทำการตั้งชื่อ Package เช่น org.calculator เป็นต้น แล้วคลิกปุ่ม Finish

6. เมื่อเราดับเบิลคลิกที่ Web Services และ CalculatorWS เราจะพบกับหน้าต่างสำหรับการออกแบบเว็บเซอร์วิสดังรูป

ออกแบบเว็บเซอร์วิส ( Designing Web Service )
ในเบื้องต้น เราจะทำการสร้างเซอร์วิส สำหรับการบวกเลขจำนวนเต็ม 2 ตัว โดยรับค่าจากฝั่งไคลเอนท์ ซึ่งเราสามารถสร้างเซอร์วิสได้ ดังนี้

1. คลิกที่ Add Operation

2. จะมีหน้าต่างขึ้นมาดังรูป ในที่นี้ให้เราใส่ค่าต่างๆ ดังนี้

  • Name เป็น add ใช้สำหรับการบวกเลข
  • Return Type เป็น int ใช้ในการเก็บผลลัพธ์จากการบวกเลข

ในส่วนของ Parameters ให้ทำการเพิ่มตัวแปรที่จะใช้ในการคำนวณ โดยการกดปุ่ม Add จะมีช่อง Name และ Type ขึ้นมา ให้เราใส่ค่าต่างๆ ดังข้างล่าง

  • Name เป็น a Type เป็น int
  • Name เป็น b Type เป็น int

3. เมื่อกดปุ่ม OK เรียบร้อย จะเห็นหน้าต่างแสดง Operation ดังรูป

4. จากนั้นทำการคลิกที่ปุ่ม Source จะเห็นซอร์สโค้ด ที่โปรแกรม Netbeans สร้างขึ้นมาให้ โดยจะมี Operation ที่เราได้ทำการสร้างตอนออกแบบด้วย นั่นคือ add และมีตัวแปรสองตัวที่เราจะใช้ในการบวกเลข นั่นคือ a กับ b

5. ทำการแก้ไขซอร์สโค้ด เพื่อเพิ่มกระบวนการ สำหรับการบวก โดยเราจะแก้ไขในส่วนของ
//TODO write your implementation code here: กับ return 0; ดังนี้
จาก

@WebMethod(operationName = "add")
public int add(@WebParam(name = "a")
int a, @WebParam(name = "b")
int b) {

//TODO write your implementation code here: return 0;

}

เป็น

@WebMethod(operationName = "add")
public int add(@WebParam(name = "a")
int a, @WebParam(name = "b")
int b) {
int result = a + b;
return result;

}

ซึ่งจะได้ผลลัพธ์ดังรูป

ทำการ Deploy และทดสอบเว็บเซอร์วิส
ในเบื้องต้นเราได้ทำการสร้างเว็บเซอร์วิส บนคอนเทนเนอร์ EJB และจะทำการรันบน GlassFish v2 ซึ่งเราสามารถ Deploy และทดสอบเว็บเซอร์วิสที่สร้างขึ้นมา ได้ดังนี้
1. ทำการ Deploy เว็บเซอร์วิส โดยคลิกขวาที่โปรเจค CalculatorWSApplication และเลือก Undeploy and Deploy ดังรูป

2. โปรแกรมจะใช้เวลาในการ Deploy เข้าสู่ GlassFish v2 ซักพัก และเมื่อเสร็จเรียบร้อย จะมีข้อความแสดงตรง GlassFish v2 Console ดังรูป และตรวจสอบดูว่า มีข้อความ BUILD SUCCESSFUL ที่บรรทัดล่างสุดด้วย

3. เมื่อทำการ Deploy เสร็จเรียบร้อยแล้ว เราจะทำการทดสอบเซอร์วิสว่า ทำงานได้ถูกต้องหรือไม่ โดยการคลิกขวาที่ CalculatorWS ดังรูป แล้วเลือก Test Web Service

4. จะมีหน้าต่าง CalculatorWSService Web Service Tester ขึ้นมาที่หน้าต่างของ Web Browser ดังรูป สามารถใส่ตัวเลขจำนวนเต็ม ในช่องข้างล่าง

5. กดปุ่ม add เพื่อทดสอบ จะมีหน้าต่างขึ้นมาดังรูป

Comments

One Response to “Developing Java Web Services with JAX-WS using Netbeans 6”

  1. chatpong on July 25th, 2008 11:39 am

    ^_^

Feel free to leave a comment...
and oh, if you want a pic to show with your comment, go get a gravatar!