Session 5: Case Study Session Dr. Nipat Jongsawat
หัวข้อนำเสนอ Session เนื้อหานำเสนอในเชิงปฏิบัติการ โดยแบ่งเป็น 4 หัวข้อดังนี้ –กรณีศึกษาที่ 1 การพัฒนาด้วยจาวา อาร์เอ็มไอ –กรณีศึกษาที่ 2 การพัฒนาแบบเว็บเซอร์วิซในสภาพแวดล้อมเดียว –กรณีศึกษาที่ 3 การเรียกใช้ Service ต่าง platform –กรณีศึกษาที่ 4การใช้ BPEL ในการควบคุมกิจกรรมทางธุรกิจ อ้างอิงเอกสารประกอบการฝึกอบรม Service-Oriented Architectureกรณีศึกษาที่ใช้ในส่วนปฏิบัติการ (Lab Book) ที่มี Dr. Nipat Jongsawat
กรณีศึกษาที่ 1 การพัฒนาด้วยจาวา อาร์เอ็มไอ SOA Lab 1 : Java RMI Session Dr. Nipat Jongsawat
หัวข้อนำเสนอ รายละเอียดกรณีศึกษา กรณีศึกษาย่อยที่ 1.1 : การใช้งาน RMI กรณีศึกษาย่อยที่ 1.2 : การเพิ่มเติม RMI Service กรณีศึกษาย่อยที่ 1.3 : การเรียกใช้ RMI ข้าม เครื่อง Session Dr. Nipat Jongsawat
กรณีศึกษา : ระบบการสั่งสินค้า ลูกค้าทำการป้อนข้อมูลการสั่งสินค้าเข้าระบบ ระบบทำการตรวจสอบ – มีสินค้าเพียงพอ – ลูกค้ามีเครดิตเพียงพอ ระบบทำการคำนวณราคา ตัดจำนวนสินค้า และ ปรับยอดเครดิตของลูกค้า Session Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
กรณีศึกษาย่อยที่ 1.1 : การใช้งาน RMI Session OrderInventory Client “Place Order” “Check Item Availability” “Check Item Cost” “Check-out Stock” Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
สิ่งที่จะต้องทำ ทำความคุ้นเคยกับเครื่องมือ NetBeans Open Project RMI_CASE1 ทำการ Run InventoryServer ทำการ Run OrderServerLab ทำการทดสอบระบบโดยการ Run ClientRMI – ป้อนรหัสลูกค้า (001) – ป้อนรหัสสินค้า (002) – ป้อนจำนวน (5) Session Dr. Nipat Jongsawat
กรณีศึกษาย่อยที่ 1.2 : การเพิ่มเติม RMI Service Session OrderInventory Client “Place Order” “Check Item Availability” “Check Item Cost” “Check-out Stock” Customer Credit “Get Customer Status” “Get Customer Credit” “Decrease Customer Credit” Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
การเรียกใช้ Java Method และ RMI CheckAvailabilityResult = InventoryServer.getItemAvailability(catID); try { CheckAvailabilityResult = InventoryServer.getItemAvailability(catID); } catch (Exception ex) { } Session OrderInventory Dr. Nipat Jongsawat
การทำงานของ RMI : Service Registering Session Order Inventory Registry Register: “InventoryServer” Skeleton Dr. Nipat Jongsawat
การทำงานของ RMI : Service Binding Session Order Inventory Registry Lookup: “InventoryServer” SkeletonStub Dr. Nipat Jongsawat
การทำงานของ RMI : Service Invoking Session Order Inventory Registry CheckAvailabilityResult = InventoryServer.getItemAvailability(catID); SkeletonStub Dr. Nipat Jongsawat
สิ่งที่จะต้องทำ Open Project RMI_CASE2 – มี Interface สำหรับ CustomerCreditService ทำการ แก้ไข OrderServerLab เพื่อเรียกใช้ CustomerCreditService – เพิ่มรายละเอียดของเครื่องและ port ของ Registry ที่มี CustomerCreditService String CustomerCreditServerAddress = “ ”; Registry CustomerCreditServerRegistry; String CustomerCreditServerPort = “3234 ”; Session Dr. Nipat Jongsawat
สิ่งที่จะต้องทำ – ทำการเรียกใช้ Registry เพื่อจัดทำ Proxy ที่ใช้ใน การ Binding กับตัว Service CustomerCreditServerRegistry = LocateRegistry.getRegistry(CustomerCreditServerAddress, (new Integer(CustomerCreditServerPort).intValue()); CustomerCreditServer= (CustomerCreditService)(CustomerCreditServerRegistry.lookup("CustomerServer" )); Session Dr. Nipat Jongsawat
สิ่งที่จะต้องทำ – ทำการเรียกใช้ Service try { CheckExistingCustomerResult = CustomerCreditServer.getCustomerStatus(custID); System.out.println("CheckExistingCustomer=“ + CheckExistingCustomerResult ); } catch (Exception ex) { } try { CheckCreditResult = CustomerCreditServer.getCredit(custID); System.out.println("CheckCreditResult = “ + CheckCreditResult); } catch (Exception ex) { } Session Dr. Nipat Jongsawat
สิ่งที่จะต้องทำ ทำการ Run InventoryServer ทำการ Run OrderServerLab ทำการทดสอบระบบโดยการ Run ClientRMI – ป้อนรหัสลูกค้า (003) – ป้อนรหัสสินค้า (001) – ป้อนจำนวน (1) Session Dr. Nipat Jongsawat
กรณีศึกษาย่อยที่ 1.3 : การเรียกใช้ RMI ข้ามเครื่อง Session OrderInventory Client “Place Order” “Check Item Availability” “Check Item Cost” “Check-out Stock” Bank Customer Credit “Get Customer Status” “Get Customer Credit” “Decrease Customer Credit” Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
สิ่งที่จะต้องทำ Open Project RMI_CASE3 – มี Interface สำหรับ BankCustomerCtrditService ทำการ แก้ไข OrderServerLab เพื่อเรียกใช้ BankCustomerCreditService – เพิ่มรายละเอียดของเครื่องและ port ของ Registry ที่มี BankCustomerCreditService – ทำการเรียกใช้ Registry เพื่อจัดทำ Proxy ที่ใช้ใน การ Binding กับตัว Service – ทำการเรียกใช้ Service Session Dr. Nipat Jongsawat
สิ่งที่จะต้องทำ ทำการ Run InventoryServer ทำการ Run OrderServerLab ทำการทดสอบระบบโดยการ Run ClientRMI – ป้อนรหัสลูกค้า (003) – ป้อนรหัสสินค้า (001) – ป้อนจำนวน (1) Session Dr. Nipat Jongsawat
บทสรุป หลักการทำงานของ RMI การเพิ่มเติม RMI Service การเรียกใช้ RMI ข้ามเครื่อง Session Dr. Nipat Jongsawat
กรณีศึกษาที่ 2 การพัฒนาแบบเว็บเซอร์วิซในสภาพแวดล้อมเดียว SOA Lab 2 : JAX-WS (Homogeneous Env.) Session Dr. Nipat Jongsawat
หัวข้อนำเสนอ Creating a Web Service Consuming the Web Service กรณีศึกษาย่อยที่ 2.1 : การใช้งาน JAX-WS กรณีศึกษาย่อยที่ 2.2 : การเพิ่มเติม JAX-WS Service กรณีศึกษาย่อยที่ 2.3 : การเรียกใช้ JAX-WS ข้ามเครื่อง กรณีศึกษาที่ 3 การเรียกใช้ Service ต่าง platform Session Dr. Nipat Jongsawat
Creating a Web Service Create a new Web Application Add new Web Service Add Web Service Operation Session Dr. Nipat Jongsawat
Coding the to declare a reference to a web service. WebServiceRef uses the wsdlLocation element to specify the URI of the deployed service’s WSDL = " InventoryManagementSystem/InventoryService?WSDL"); private InventoryService inventoryService; Retrieves a proxy to the service, also known as a port, by invoking Inventory inventoryPort = InventoryService.getInventoryPort(); – The port implements the SEI defined by the service. Invokes the port’s method, passing to the service a name. int CheckAvailableResult = inventoryPort.getItemAvailability(catID); Session Dr. Nipat Jongsawat
Consuming the Web Service in Netbeans Create new client application (Web, Servlet, JSP page) New > Web Service Client Servlet: New > Servlet – In Editor Web Service Client Resource > Call Web Service Operation JSP: drag Web service operation -> index.jsp Session Dr. Nipat Jongsawat
กรณีศึกษาที่ 2 Session Dr. Nipat Jongsawat
กรณีศึกษา 2.1 : ระบบการสั่งสินค้า ลูกค้าทำการป้อนข้อมูลการสั่งสินค้าเข้าระบบ ระบบทำการตรวจสอบ – มีสินค้าเพียงพอ ระบบทำการคำนวณราคา ตัดจำนวนสินค้า Session Dr. Nipat Jongsawat
กรณีศึกษาย่อยที่ 2.1 : การใช้งาน JAX-WS Session OrderInventory Client “Place Order” “Check Item Availability” “Check Item Cost” “Check-out Stock” Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
กรณีศึกษา 2.2 : ระบบการสั่งสินค้า ลูกค้าทำการป้อนข้อมูลการสั่งสินค้าเข้าระบบ ระบบทำการตรวจสอบ – มีสินค้าเพียงพอ – ลูกค้ามีเครดิตเพียงพอ ระบบทำการคำนวณราคา ตัดจำนวนสินค้า และ ปรับยอดเครดิตของลูกค้า Session Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
กรณีศึกษา 2.3 : ระบบการสั่งสินค้า ลูกค้าทำการป้อนข้อมูลการสั่งสินค้าเข้าระบบ ระบบทำการตรวจสอบ – มีสินค้าเพียงพอ – ลูกค้ามีเครดิตกับธนาคารเพียงพอ ระบบทำการคำนวณราคา ตัดจำนวนสินค้า และ เรียกใช้บริการปรับยอดเครดิตลูกค้าของธนาคาร Session Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
กรณีศึกษาที่ 3 การเรียกใช้ Service ต่าง platform Session Dr. Nipat Jongsawat
กรณีศึกษาที่ 3 Session Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
. NET Web Service Web Service References = " InventoryManagementSystem/InventoryService?WSDL"); private org.inventory.InventoryService inventoryService; = " InventoryManagementSystem/InventoryService.asmx?WSDL"); private org.inventory.InventoryService inventoryService; Port/Endpoint ตัวเดิม org.inventory.Inventory inventoryPort = inventoryService.getInventoryPort(); แทนที่ด้วย org.inventory.InventoryServiceSoap inventoryPort = inventoryService.getInventoryServiceSoap(); Session Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
WebSphere Web Service Web Service References CustomerManagementSystem/CustomerCreditService?WSDL"); private org.customer.CustomerCreditService customerCreditService; = " CustomerMgtSystem/wsdl/CustomerMgtSystem.wsdl"); private org.customer.CustomerMgtSystemService customerCreditService; Session Dr. Nipat Jongsawat
WebSphere Web Service Port/Endpoint ตัวเดิม org.customer.CustomerCredit customerPort = customerCreditService.getCustomerCreditPort(); แทนที่ด้วย org.customer.CustomerMgtSystem customerPort = customerCreditService.getCustomerMgtSystem(); Customer Status Return ตัวเดิม if(!customerPort.getCustomerStatus(custID)) แทนที่ด้วย if(!customerPort.getCustomerStatus(custID).equals( “ 1 ” )) Session Dr. Nipat Jongsawat
Session Dr. Nipat Jongsawat
Index.jsp Port/Endpoint ตัวเดิม org.order.OrderService service = new org.order.OrderService(); org.order.Order port = service.getOrderPort(); แทนที่ด้วย org.order.OrderService service = new org.order.OrderService(); org.order.OrderServiceSoap port = service.getOrderServiceSoap(); Session Dr. Nipat Jongsawat
กรณีศึกษาที่ 4 การใช้ BPEL ในการควบคุมกิจกรรมทางธุรกิจ Session Dr. Nipat Jongsawat