Transcript
Page 1: Top down ปฏิบตัการทิี่ 5 WSDL Web Service Provider ... · Generate เอกสาร WSDL และ Deploy Service คลิกขวาที่ชื่อคลาส

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

Page 2: Top down ปฏิบตัการทิี่ 5 WSDL Web Service Provider ... · Generate เอกสาร WSDL และ Deploy Service คลิกขวาที่ชื่อคลาส

การสร้างเอกสาร 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 ที่ไดส้ร้างไว้

Page 3: Top down ปฏิบตัการทิี่ 5 WSDL Web Service Provider ... · Generate เอกสาร WSDL และ Deploy Service คลิกขวาที่ชื่อคลาส

ตาํแหน่งของเอกสาร 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

Page 4: Top down ปฏิบตัการทิี่ 5 WSDL Web Service Provider ... · Generate เอกสาร WSDL และ Deploy Service คลิกขวาที่ชื่อคลาส

ทดสอบด้วย 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

Page 5: Top down ปฏิบตัการทิี่ 5 WSDL Web Service Provider ... · Generate เอกสาร WSDL และ Deploy Service คลิกขวาที่ชื่อคลาส

การสร้างคลาสและเมธอดการสร้างคลาสและเมธอดสร้าง 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

Page 6: Top down ปฏิบตัการทิี่ 5 WSDL Web Service Provider ... · Generate เอกสาร WSDL และ Deploy Service คลิกขวาที่ชื่อคลาส

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