1
ดร.ธีระยุทธ ทองเครือภาควชิาวทิยาการคอมพิวเตอร ์ คณะวทิยาศาสตร์
มหาวทิยาลยัขอนแกน่
ปฏิบตักิารที่ 5Web Service Provider(Functional Service)
ชนิดของการสร้างเวบ็เซอร์วสิชนิดของการสร้างเวบ็เซอร์วสิแบบ Top down คือ การสร้างเวบ็เซอร์วสิที่เริ่มตน้จากการสร้าง
เอกสาร WSDL ก่อน แลว้ค่อยทาํการ implement ส่วนประมวลผล
แบบ Bottom up คือ การ implement ส่วนประมวลผลก่อน แลว้สร้างเอกสาร WSDL จากส่วนที่ implement เสร็จแลว้
2
การสร้างเวบ็เซอร์วสิแบบ Top downการสร้างเวบ็เซอร์วสิแบบ Top down1. สร้างเอกสาร WSDL - ออกแบบโครงสร้าง XML ที่จะใชเ้ป็น input
และ output ของเวบ็เซอร์วสิ2. Generate Source Code – โดยใชเ้ครื่องมือในการสร้างโคด้ต่างๆ ที่
เกี่ยวขอ้งกบัการทาํงานของเวบ็เซอร์วสิจากเอกสาร WSDL3. Implement ส่วนประมวลผล - พิมพโ์คด้คาํสัง่ภายในที่จะทาํงาน
เมื่อไดร้ับ SOAP Request4. Deploy บน Server – เพิ่ม Service ที่สร้างเสร็จบน Server เพื่อรอ
รับคาํร้องจากผูใ้ช้
3
ตวัอย่างการสร้างเวบ็เซอร์วสิแบบ Top downตวัอย่างการสร้างเวบ็เซอร์วสิแบบ Top down ตอ้งการสร้างเซอร์วสิที่ใหบ้ริการหาค่า BMR (Basal Metabolic Rate) ค่า BMR นี้ จะแสดงถึงปริมาณพลงังานที่ร่างกายตอ้งการในแต่ละวนัสาํหรับการดาํรงชีวติอยู ่มี
หน่วยเป็นกิโลแคลอรี่ต่อวนั สูตรคาํนวณดงันี้ ค่า BMR สําหรับผู้ชาย
BMR = 66 + (13.7 x นํ้าหนกั kg) + (5 x ส่วนสูง cm) –(6.8 x อาย)ุ ค่า BMR สําหรับผู้หญงิ
BMR = 665 + (9.6 x นํ้าหนกั kg) + (1.8 x ส่วนสูง cm) – (4.7 x อาย)ุ จากสูตร input ของเวบ็เซอร์วสิประกอบดว้ย
1. เพศ – จะตอ้งมีค่าเป็น Male หรือ Female2. นํ้าหนกั - ตวัเลขจาํนวนจริง3. ส่วนสูง - ตวัเลขจาํนวนจริง4. อาย ุ- ตวัเลขจาํนวนเตม็
4
calculateBMRService
gender
age
weightbmrValue
height
การสร้างเอกสาร WSDL การสร้างเอกสาร WSDL สร้าง Dynamic Web Project ชื่อ BMRWebServiceสร้างเอกสาร WSDL ที่ Web Content คลิกขวาเลือก New > Other… > Web Services > WSDL File
ตั้งชื่อไฟลเ์ป็น bmr.wsdl คลิกที่แทบ็ Design กาํหนดชื่อ service ใหม่เป็น calculateBMR ดงัภาพ หลงัจากนั้นคลิกที่ลูกศรออก เพื่อไปยงัหนา้ระบุชนิดของ input และ output
5
กาํหนดชื่อ serviceคลิกเพื่อกาํหนด input
คลิกเพื่อกาํหนด output
การกาํหนดโครงสร้างของ inputการกาํหนดโครงสร้างของ input
6
<xsd:element name="calculateBMR"><xsd:complexType><xsd:sequence><xsd:element name="gender" type="xsd:string" /><xsd:element name="age" type="xsd:int"></xsd:element><xsd:element name="weight" type="xsd:float"></xsd:element><xsd:element name="height" type="xsd:float"></xsd:element></xsd:sequence>
</xsd:complexType></xsd:element>
<xsd:element name="calculateBMR"><xsd:complexType><xsd:sequence><xsd:element name="gender" type="tns:genderType" /><xsd:element name="age" type="xsd:int"></xsd:element><xsd:element name="weight" type="xsd:float"></xsd:element><xsd:element name="height" type="xsd:float"></xsd:element></xsd:sequence>
</xsd:complexType></xsd:element>
. . .<xsd:simpleType name="genderType">
<xsd:restriction base="xsd:string"><xsd:enumeration value="Male"/><xsd:enumeration value="Female"/>
</xsd:restriction></xsd:simpleType>
กาํหนดเงื่อนไขขอ้มูลใหม่ โดยสร้าง simpleType ขึ้นมา
เงื่อนไขตอ้งเป็น Male หรือ Female เท่านั้น
การกาํหนดโครงสร้างของ outputการกาํหนดโครงสร้างของ output
7
<xsd:element name="calculateBMRResponse"><xsd:complexType>
<xsd:sequence><xsd:element name="bmrValue" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType></xsd:element>
การ Generate Source Codeการ Generate Source Codeคลิกขวาที่ชื่อ Project เลือก New > Other… > Web Services > Web Services
8
เลือกแบบ Top down
เลือกเอกสาร WSDL ที่ไดส้ร้างไว้
เลือกเอกสาร WSDL ที่ไดส้ร้างไว้
ตาํแหน่งของเอกสาร WSDLตาํแหน่งของเอกสาร WSDL เอกสาร WSDL จะถูกสร้างขึ้นใหม่ที่ WebContent/wsdl มีชื่อลงทา้ยดว้ย SOAP เช่น
bmrSOAP.wsdl โดยจะระบุ URL ที่ใชใ้นการส่ง SOAP Request มายงัเวบ็เซอร์วสิ
9
<wsdl:service name="bmr"><wsdl:port binding="tns:bmrSOAP" name="bmrSOAP">
<soap:address location="http://localhost:8080/BMRWebService/services/bmrSOAP"/></wsdl:port>
</wsdl:service>
<wsdl:service name="bmr"><wsdl:port binding="tns:bmrSOAP" name="bmrSOAP">
<soap:address location="http://www.example.org/"/></wsdl:port>
</wsdl:service> bmr.wsdl
bmrSOAP.wsdl
Implement ส่วนประมวลผลImplement ส่วนประมวลผล
10
ตวัแปรที่ถูกเกบ็ค่าเมื่อรับขอ้มูลจาก SOAP Request
แทรกชุดคาํสัง่ในการประมวลผลเมื่อมีผูเ้รียกเวบ็เซอร์วสิ
คลาสที่ Generate จาก WSDL
เพิ่มคาํสัง่ที่ตอ้งการในเมธอด
การ Deploy Service ทีส่ร้างขึน้การ Deploy Service ทีส่ร้างขึน้ เพิ่มโปรเจค็ BMRWebService ไปยงั Server และ Start Server
ทดสอบเปิดเอกสาร WSDL ของเวบ็เซอร์วสิที่
11
http://localhost:8080/BMRWebService/services/bmrSOAP?wsdl
ชื่อ Project ชื่อไฟล ์wsdl ที่สร้างขึ้นในขั้นตอนแรกจะตามดว้ย SOAP?wsdl
ทดสอบด้วย SoapUIทดสอบด้วย SoapUI
12
ทดสอบด้วย SoapUIทดสอบด้วย SoapUI
13
Assignment#5: ข้อ 1Assignment#5: ข้อ 1จงเขียนเวบ็เซอร์วสิใหบ้ริการหาค่า BMI (Body Mass Index) ซึ่งมีสูตรดงันี้
14
calculateBMIService
weight:float bmiValue :float
height:float
การสร้างเวบ็เซอร์วสิแบบ Bottom upการสร้างเวบ็เซอร์วสิแบบ Bottom up1. สร้างคลาสและเมธอด – เป็นการเขียนโคด้โปรแกรมทัว่ไป แต่มี
การสร้างเมธอดที่ตอ้งการใหเ้ป็นเวบ็เซอร์วสิบรรจุอยูใ่นคลาส2. Generate เอกสาร WSDL จากคลาส – ใชเ้ครื่องมือในการสร้าง
เอกสาร WSDL ที่ติดมากบัโปรแกรมพฒันา3. Deploy บน Server – เพิ่ม Service ที่สร้างเสร็จบน Server เพื่อ
รอรับคาํร้องจากผูใ้ช้
15
ตวัอย่างการสร้างเวบ็เซอร์วสิแบบ Bottom upตวัอย่างการสร้างเวบ็เซอร์วสิแบบ Bottom upตอ้งการสร้างเซอร์วิสที่ใหบ้ริการแปลงค่าอุณหภูมิที่มีหน่วยเป็นฟาเรน
ไฮร์ ใหเ้ป็นเซลเซียส มีสูตรคาํนวณดงันี้ °C = (°F - 32) x 5/9
16
fahrenheitToCelsiusService
fahrenheit: double celsius: double
การสร้างคลาสและเมธอดการสร้างคลาสและเมธอดสร้าง Dynamic Web Project ชื่อ ftocService ที่ Java Resources > src คลิกขวา New > Package ตั้งชื่อ examสร้างคลาสใหม่โดยคลิกขวาที่ exam เลือก New > Class ใส่ชื่อ Convert
17
package exam;import javax.jws.WebMethod;import javax.jws.WebService;@WebServicepublic class Convert {
@WebMethodpublic double fahrenheitToCelsius(double fahrenheit) {return (fahrenheit-32)*5.0/9.0;
}}
Generate เอกสาร WSDL และ Deploy ServiceGenerate เอกสาร WSDL และ Deploy Serviceคลิกขวาที่ชื่อคลาส Convert > Web Services > Create Web Services
18
เอกสาร WSDL จากการ Generateเอกสาร WSDL จากการ Generateทดสอบเปิดเอกสาร WSDL ของเวบ็เซอร์วสิ
19
http://localhost:8080/ftocService/services/Convert?wsdl
ชื่อ Project ชื่อคลาส
ทดสอบด้วย SoapUIทดสอบด้วย SoapUI
20
Assignment#5: ข้อ 2Assignment#5: ข้อ 2จงเขียนเวบ็เซอร์วสิใหบ้ริการตดัเกรดจากคะแนนที่ส่งมา โดยมีเงื่อนไขดงันี้
คะแนนมากกวา่ 80 ไดเ้กรด Aคะแนนมากกวา่ 75 แต่นอ้ยกวา่ 80 ไดเ้กรด B+คะแนนมากกวา่ 70 แต่นอ้ยกวา่ 75 ไดเ้กรด Bคะแนนมากกวา่ 65 แต่นอ้ยกวา่ 70 ไดเ้กรด C+ คะแนนมากกวา่ 60 แต่นอ้ยกวา่ 65 ไดเ้กรด Cคะแนนมากกวา่ 55 แต่นอ้ยกวา่ 60 ไดเ้กรด D+คะแนนมากกวา่ 50 แต่นอ้ยกวา่ 55 ไดเ้กรด Dคะแนนตํ่ากวา่เงื่อนไขอื่นไดเ้กรด F
21
GraderService
score: int grade: string
Top Related