Thứ Sáu, 15 tháng 8, 2014

Java API for Webservice

Nội dung bài học : giới thiệu các bộ thư viện mà java cung cấp để chúng ta có thể làm việc với webservice bao gồm :
 + Java API for XML-based RPC (JAX-RPC).
 + SOAP with Attachments API for Java (SAAJ).
 +Java API for XML Registries (JAXR).
 +Java API for XML Processing (JAXP).


1/ Web service dùng XML : 
-Tất cả các thao tác làm việc với web service đều thông qua xml dựa trên giao thức HTTP, XML, SOAP, TCP/IP
-Đặc điểm: có cấu trúc phi trạng thái , kiến trúc không đồng bộ và không phụ thuộc vào bất cứ nền tảng cũng như ngôn ngữ nào 
2/ Bộ thư viện JAXP : 
bao gồm thư viện SAX2, DOM ,DOM2 : có chức năng quét file XML và thao tác trên nó.

3/ Bộ thư viện JAX-RPC 
Là bộ thư viện có trong java E 1.4 có chứa mô hình bao gồm :
Server-Side RPC Runtime là nơi cung cấp các dịch vụ web service
- Client gửi thông tin đến server dưới dạng SOAP trên giao thức HTTP và ngược lại
- Client và server làm việc với nhau thông qua WSDL
  -Ưu điểm:
      + Sử dụng môi trường SOAP trên web service
      + Sử dụng 2 quá trình marshalling and unmarshalling.


4/ Bộ thư viện JAXR : 
AXR cho phép các lập trình viên phần mềm Java để sử dụng duy nhất, dễ sử dụng trừu tượng API để truy cập vào một loạt các cơ quan đăng ký XML. Một mô hình thông tin thống nhất JAXR mô tả nội dung và siêu dữ liệu trong đăng ký XML. 
JAXR cung cấp cho các nhà phát triển khả năng viết các chương trình khách hàng registry bị di động trên đăng ký mục tiêu khác nhau. JAXR cũng cho phép khả năng giá trị gia tăng vượt ra ngoài các văn phòng đăng ký bên dưới.
5/ Bộ thư viện SAAJ : 
- SOAP cung cấp định dạng tin nhắn cơ bản cho Web services. Nó cho phép người dùng tạo và đọc tin nhắn theo chuẩn SOAP 1.1 và SOAP với đính kèm
 - Cho phép người sử dụng tạo và gửi thông điệp SOAP với đính kèm thông qua package javax.xml.soap

6/ Bộ thư viện JAXB : 
- Không chỉ là bộ thư viện trên java làm việc với webservice mà nó được dùng trong rất nhiều các thư viện khác.Nó có nhiệm vụ convert các dữ liệu java sang XML và ngược lại.JAXB có cấu trúc như hình : 

   

Nhược điểm của JAXB

  • Cần XML phải có DTD hoặc Schame và thư viện này không thể sử dụng với XML nói chung được
  • Cần phải cho JAXB biết cây được tổ chức như thế nào để giúp ứng dụng đơn giản hơn
  • JAXB không hỗ trợ các cấu trúc của DTD như là Internal subsets, NOTATIONS, ENTITY và ENTITYS, Enumerated, NOTATION nó chỉ hỗ trợ cho Schame mà thôi

Overview of Rest Architecture & Restful Webservice

Mục tiêu bài học :
_ Diễn giải kiến trúc REST
_Các dàng buộc , đặc điểm của kiến trúc REST
_Giải thích về RESTful trong web service
_Những yêu cầu về việc phát triển RESTful webservice
_Bộ thư viện JAX-RS

1/ REST : là một tập hợp các hướng dẫn và nguyên lý áp dụng trong thiết kế môi trường web.(REST không phải là một giao thức cũng như là một chuẩn).

2/ Các dàng buộc của REST :
- Nguyên lý làm việc ở đây là trong một ứng dụng các client sẽ gửi thông tin lên server và các server sau khi nhận thông tin sẽ trả kết quả về với client.
- Giao thức Http là Stateless khi client gọi lên server thì client phải gửi toàn bộ các thông tin cần thiết để server có thể nhận biết client ấy và trả về.Khi xử lý xong thi server sẽ quên ngay lập tức 
- Cache : các client có thể giữ lại các thông tin mà server gửi trả về .
- Code on Demand : mỗi khi server cần một thông tin gì đó thì server sẽ chuyển code đó về.
- Tất cả các tài nguyên được quy về một chuẩn duy nhất.

3/ RESTful web service : 
_ Nó dựa trên REST và sử dụng Http
_ Không phụ thuộc vào một nền tảng ngôn ngữ nào.
_ Rất nhẹ so với  SOAP( chuẩn của web service ) do đó làm ứng dụng trở nên nhanh hơn.
_ Trên môi trương web nó sử dụng Uri.



4 / Những yêu cầu về việc phát triển RESTful webservice yêu cầu có đủ :

- Resoures
-Uri
-Http methods

5/ Bộ thư viện JAX-Rs :
- Là một bộ thư viện chính thống trong java EE và được dựa trên annotation.

Nhận xét :
- Có thể thấy rằng nhờ có REST việc quản lý tài nguyên an toàn và đơn giản hơn rất nhiều do Rest quy về một dang Uri.
- Rest nhẹ hơn Soap nhiều nên càng ngày càng được ưa chuộng

developing web service using JAX-WS

Yêu cầu đề bài : Happy Consumer International Bank (HCIB), a leading multinational organization having established branches all over the world is now starting its banking services in India. The Bank has employed you as a full time System Consultant with them. It wants to deploy a Web Service that will offer credit card validation and online banking facilities that are typically offered by all the multinational banks. The main priorities for the online banking system are reliability, availability and serviceability of the application. Additionally, the system should be highly scalable and secure as the bank expects substantial growth in the
future. Consider yourself to be a part of the team that implements the credit card validation module. Develop a JAX_RPC based Web Service that exposes the boolean validateCreditCard(cardNumber) method. This method implements the logic for credit card number validation, and returns a boolean value indicating whether the card number is valid or not. Logic for credit card number validation:
Step 1: Multiply the alternate digits of the credit card number by 2 starting with the second digit from the right (the first right--hand digit is the check digit.)
Step 2: Add the individual digits comprising the products obtained in Step 1 to each of the unaffected digits in the original number.
Step 3: The sum of all digits obtained after Step 2 as well as unaffected digits must be a number which is a multiple of 10 (30, 40, 50, etc.) for the credit card number to be valid.

Giải quyết vấn đề :  Bài toán yêu cầu viết 1 chương trình có chức năng check credit Card hợp lệ.Đầu tiên ta tạo 1 java web application có chức năng như 1 server : Sau đó ta tạo 1 webservice bằng cách chọn new  > other > Web service > Web service


class web service này ta tạo lớp boolean validate để trả về giá trị đúng hoặc sai dựa theo thuật toán đề bài yêu cầu :


Sau đó ở thư mục web Service ta chọn Test WebService để hiển thị ra cấu hình và thu được kết quả :


Ở đây ta sẽ sử dụng đường dẫn WSDL để kết nối với client.
Tạo 1 java application làm client.Sau đó create 1 web service client trong mục web service như trong hình


Sau đó copy đường dẫn WSDL vừa có vào mục WSDL Url:


Netbean sẽ tự zen code ra cho chúng ta.Mở foder web service references rồi kéo mục creditCardValidator vào class main trong java application vừa tạo .rồi in ra credit card mà ta muốn check :
Ta chạy và thu về được kết quả.
Nếu credit card hợp lệ :
và nếu không :

Introduction to web service


+ Định nghịa :là thành phần trong application,nó cung cấp các nghiệp vụ  , hiển thị dữ liệu trong thế giới web.Web service có 2 thành phần là Client và Server.Trong đó Server chứa các nhiệp vụ logic còn Client có thể sử dụng bất kì công nghệ nào và có thể truy xuất từ bất kì vị trí nào mà có kết nối với Server.



+ Đặc điểm Webservice được xây dựng dựa trên XML và sử dụng protocol như HTTP hoặc SOAP.


+ Cách hoạt động : 



Sơ đồ trên miêu tả chi tiết các làm việc của 1 Webservice.Khi clients gọi đến server(Webservice) trên môi trường internet sử dụng giao thức SOAP, SOAP sẽ phân tích để xem client muốn gì.SOAP trả về dư liệu cho client dưới dạng XML.

Nhận xét : 
+ Sử dụng giao thức mở.Các dữ liệu được định dạng trên văn bản giúp việc code dễ dàng hơn
+ Tạo mối quan hệ tương tác lẫn nhau giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán.
+ Sử dụng XML để giao tiếp nên không phụ thuộc vào nền tảng.

Chủ Nhật, 10 tháng 8, 2014

Use Xpath

Làm module 9 :
Yêu cầu : Trong một tổ chức, năm trăm nhân viên đang làm việc. Trong đó có một số người học nghề. Các đơn vị giao hàng đầu của tổ chức đó đã cho bạn những trách nhiệm phát triển một phần mềm, mà bạn có thể tìm thấy các chi tiết của người học nghề. Sử dụng các tập tin dưới đây để phát triển ứng dụng:
1. EmployeeDatabase.xml tập tin chứa dữ liệu của tất cả các nhân viên.
2 Sử dụng XPath biểu thức.
Trong ứng dụng này, người học nghề được định nghĩa trong không gian tên thực tập sinh trong khi tất cả các nhân viên khác được định nghĩa trong không gian tên mặc định. Ứng dụng này sẽ đếm số lượng người học nghề và in chi tiết của họ trên bàn điều khiển của người dùng.

Xử lý vấn đề :Ta viết file EmployeeDatabase.xml để khai báo thông tin của nhận viên trong công ti :

Ở class main ta khai báo hàm kết nối với XML kết nối với NamespaceContext bằng đoạn code sau :

Sau đó ta sử dụng XPath để đọc các phần tử của lớp emplyee trong file XML :
Chạy và thu được kết quả :

Thứ Sáu, 8 tháng 8, 2014

Apply XQuery

Mục tiêu bài : Read all usernames in file tomcat-users.xml

Giải quyết :

Đầu tiên ta down và sử dụng thư viện Nux 1.6 ở link sau đây : http://www.javalobby.org/java/forums/t59332.html
Sau đó lấy file XML tomcat user : 
Sau đó khai báo code hàm Main : 

Lưu ý ở đây ta phải truy vấn vào file xml , dùng vòng for cho chạy từ đầu đến cuối lấy ra vị trị của thẻ user

Kết quả thu được : 
Nhận xét : 
-XQuery có thể transfrom dữ liệu từ XML sang XHTML rất dễ dàng
-Sử dụng XQuery làm cho việc lấy dữ liệu từ file XML lên Xpath khá khó khăn

Thứ Năm, 7 tháng 8, 2014

Practice Assignment Module 6 Use TreeWalker to read xml file

Yêu cầu : làm lại Module 6 nhưng sử dụng TreeWalker để đọc file XML

Giải quyết :
Tạo new Project sau đó tôi sẽ sử dụng file XML của bài module 6 đã làm trước đây :

Bài toán yêu cầu sử dụng DOM tree để đọc file XML  nên ta tạo class traverseNode có nội dung sau :

Sau đó code chạy trương trình liên kết với class traverseNode vừa tạo :

Chạy và ta được kết quả : 

Nhận xét : 
So với cách làm trước đây, việc sử dụng TreeWalker đều thể hiện ra được chi tiết 1 cây tài liệu.Tuy nhiên TreeWalker  duy trì được các mối quan hệ thứ bậc của cây con và cho phép chuyển hướng cho hệ thông phân cấp còn NodeIterator thì trình bày cây tài liệu theo giao diện phẳng và các thứ tự được dựa theo thứ tự tài liệu do đó tùy theo mục đích mà ta có thể sử dụng 2 cách đọc dữ liệu XML khác nhau.

Thứ Tư, 6 tháng 8, 2014

Do Practice Assignment Module 6 using NodeIterator

Yêu cầu : Tạo một tài liệu XML có chứa các chi tiết về nhân viên của một tổ chức. Sau đó tạo ra một ứng dụng, trong đó sử dụng các phân tích cú pháp DOM để phân tích các tài liệu XML thành một cây DOM và đi qua qua nó. Ứng dụng này nên thực hiện giao diện TreeWalker để đi qua tất cả các nút có trong cây DOM và in giá trị của các nút.

Giải quyết vấn đề : 
dầu tiên ta tạo XML : 

Sau đó code action : 

Kết quả thu được : 
 

Nhận xét
- có thể chọn lọc các nội dung của tài liệu để hiện thị rõ ràng

Describe overview of DOM Level 2

Định nghĩa : -DOM level 2 được phát triển từ DOM 1 và nó dựa trên các nền tảng interface của DOM 1
Module DOM 2: 
DOM 2 được dựa trên 6 module là : Range ,Event , view , html ,Style ,Traversal .


Module chính của Dom2 được định nghĩa  một bộ các objects  các class để có thể truy xuất   thao tác với nội dung xml được quét.
Các Objects trong tài liệu dom này  các thể hiển của các module khác nhau trong .

*Những interface trong Core và Range cần chú ý.

Event module:
_ được xây dựng dựa trên module level 1 và không bắt buộc phải có, nó giúp chúng ta đăng kí và định nghĩa thêm những luông event khác nhau.
Khi chúng ta bắt đầu đọc thẻ HTML thì ta đã bắt đầu 1 event vào khi kết thúc đọc thì là kết thúc 1 event.

Nhận xét :
Ta làm việc với các module của DOM 2 dễ dàng do cấu trúc không khác j với DOM 1

DOM 2 trang bị các công cụ thực sự mạnh mẽ trong việc truy xuất, đọc và làm việc với tài liệu XML.

Chủ Nhật, 3 tháng 8, 2014

Manipulate DOM tree

Module 1 và 4.
Module 1 :  Tạo một danh sách học sinh student.xml. Viết chương trình cho một giáo viên để đếm số học sinh trong một lớp học. Tạo một DOM treefor phân tích student.xml. Khai báo countStudents () chức năng đệ quy đếm số lượng sinh viên các nút cho đến khi đạt đến nút cuối cùng trong tài liệu theXML.

Giải quyết vấn đề : 
Đầu tiên tôi viết file XML có tên là student : 



Sau đó code ham main : 


Kết quả thu được :


Module 1 : Tạo một tài liệu ứng dụng phân tích cú pháp XML .Ứng dụng này nên sử dụng một Dom Parser phân tích một tài liệu XML có chứa tên của người lao động trong organiaztion, ABC Apparels Ltd, và sau đó in tên của tất cả các nhân viên.

Giải quyết vấn đề : 
Tạo file XML : 

Ở hàm main ta viết code :


Kết quả thu được : 

Nhận xét : 
- Code DOM khá tương đồng với SAX nên dễ hiểu và đọc 
- Đọc các thẻ trong XML nhanh và dễ dàng hơn SAX do ở SAX ta cần khai báo thêm  class extend SAXException và sử dung phương thức getValue trong startElenment.

overview DOM

Bài này sẽ nói về cách chúng ta sử dụng DOM để làm việc với 1 file XML .

Tại sao lại dùng DOM ?
Chúng ta sử dụng DOM vì SAX có một nhược điểm là nó không cho chúng ta truy suất tới bất kì một điểm nào ngay lập tức trong file xml mà phải đọc thông tin 1 cách tuần tự từ trên xuống dưới.Và việc đọc dữ liệu từ file XML dùng SAX rất phức tạp đặc biệt cho những chức năng tìm kiếm phức tạp do không hỗ trợ DTD , không có nhiều thông tin về Lexical và không thể dùng SAX để cập nhật thông tin của 1 file XML .

DOM : 
Để khắc phục các nhược điểm kể trên của SAX thì người ta tạo ra DOM.Nó có tất cả các ưu điểm của SAX và khắc phục được các điểm hạn chế kể trên.

Lợi ích của DOM đem lại : 
_Truy suất được nhiều tài liệu để quản lý các cấu trúc dữ liệu phức tạp cho phép chúng ta thay đổi dữ liệu trong file XML
_ Cho phép chúng ta truy suất đến 1 thành phần ngẫu nhiên và liên tục trong file XML

Các thành phần của DOM : DOM có cấu trúc hình cây.Chúng ta có thể tham khảo qua ảnh sau :
 Cách thức làm việc với DOM :
_Gần như giống với SAX.trong SAX có parser còn ở đây ta có Documentbuilder,muốn có documentbuilder ta có documetbuilder factory.

Nhận xét : 
_ DOM có tất cả các ưu điểm và giải quyết được tất cả các nhược điểm của SAX.
_-DOM sẽ phân tích toàn bộ dữ liệu XML trong bộ nhớ trong khi SAX chỉ phân tích một phần nhỏ trong bộ nhớ

So sánh XmlReader và SAXParser

 SAX Parser : 
_ Quét file XML từ trên xuống dưới nên không tốn nhiều bộ nhớ do vậy người ta sử dụng nó để đọc nhưng file XML cực lớn.
_ Có tốc độ sử lý nhanh do code khá đơn giản, dễ thuộc.
_ Chỉ có thể đọc file XML chứ không tác động gì lên trang XML được.


XML Reader :
_Có thể đọc các phần tử trong file XML cùng một lúc.
_Sử dụng mô hình kéo
_ Code khó đọc hơn.


Nhận xét : cả 2 đều có mục đích là đọc file XML nhưng tùy vào từng chương trình mà ta sử dụng SAXParer hoặc XMLReader.