2.7.1 Apache Tomcat
Tổng quan
Apache TomCat là một webserver, là nơi tiếp nhận các yêu cầu của các máy khách, phân tích yêu cầu, xử lý thông tin và trả về cho máy khách dưới dạng trang web với phần mở rộng là html, asp, hay jsp. Ở đây, TomCat server có mục đích là phục vụ cho việc thực thi cho các công nghệ Servlet và JSP.
TomCat server đóng vai trò như một host ảo, để có thể chạy các trang servlet, hay jsp trong mạng localhost
Cài đặt
Xem hướng dẫn chi tiết tại trang: http://tomcat.apache.org
Có thể chi tiết hoá các bước như sau:
1. Download gói tomcat.jar hoặc file tomcat.exe(Chú ý: trước khi cài đặt TomCat, bạn phải cài J2SDK trước đã.)
2. Cài đặt hoặc giải nén các file này
3. Cấu hình đường dẫn :CLASSPATH, CATALINA_HOME, port number,…
4. Thử test xem quá trình cài đặt đã thành công chưa, bằng cách truy nhập đến đường dẫn: http://localhost:8080
Sử dụng
Hình 2.22 dưới đây là cấu trúc thư mục của một ứng dụng cài đặt với apache tomcat
Hình 2.22. Minh họa cách tổ chức thư mục của Apache Tomcat
Các ứng dụng muốn chạy trong TomCat server thì phải tổ chức giống như trên
2.7.2 Apache Axis2
• Tổng quan
Web Service ra đời đã mở ra một hướng mới cho việc phát triển các ứng dụng trên Internet. Chúng ta đã có phương pháp lập trình hướng đối tượng, bây giờ lại có kiến trúc hướng dịch vụ. Tuy nhiên, việc xây dựng được một hệ thống Web Services theo thủ công thuần túy tốn rất nhiều thời gian và công sức. Từ khi công bố dịch vụ lên mạng, cung cấp thông tin dịch vụ cho đến khi client truy xuất và sử dụng dịch vụ là một chuỗi các công việc cực kì phức tạp và dễ phát sinh nhiều sai sót. Apache axis là một bộ máy có khả năng xử lý, phát sinh các đoạn mã tự động, giảm tối thiểu khối lượng công việc cho người phát triển web Services.
Tương tự như apache TomCat. Apache Axis cũng là một server bổ sung, hỗ trợ cho công nghệ SOAP. Nó hỗ trợ việc upload và quản lý các web service. Nó cung cấp các gói thư viện cho việc hỗ trợ lập trình viên làm việc với các web service, SOAP hay WSDL.
• Cài đặt
Hướng dẫn chi tiết tại trang: http://ws.apache.org/axis2/index.html Một số bước cài đặt:
1. Download gói axis2.jar vè và giải nén 2. Download gói maven.jar về và giải nén 3. Cấu hình hệ thống và thư mục
……. • Sử dụng
Hình 2.23. Minh họa cách tổ chức thư mục của apache web service.
Mỗi service phải bao gồm các lớp chức năng của service và một file services.xml, mô tả về service đó.
Các web service sau khi được tạo ra, đóng gói dưới dạng file .aar và được đặt trong thư mục axis home/webapp/axis2/WEB-INF/services, và nó sẽ được hiển thị trên danh sách các dịch vụ web và có thể được gọi bởi các ứng dụng khác.
Kết luận:
Trong chương này chúng ta đã nghiên cứu tất cả các công nghệ nền tảng sẽ sử dụng trong đồ án, đó là RSS, XML, Web Service tổng quan và các thành phần là SOAP, UDDI, WSDL, AJAX, sau đó đã nghiên cứu để thực hiện các thao tác cài đặt công cụ để xây dựng và chạy ứng dụng là Apache Tomcat Server, Apache Axis Server. Tiếp theo chúng ta sẽ bắt tay vào xây dựng ứng dụng.
CHƯƠNG 3: PHÂN TÍCH HỆ THỐNG
Sau khi nghiên cứu cơ sở lý thuyết, nắm được những vấn đề căn bản cần thiết cho ứng dụng dự định sẽ xây dựng, nhóm sinh viên chúng em bắt tay vào phần phân tích hệ thống, mô tả tổng quan về ứng dụng, đưa ra sơ đồ phân cấp chức năng, các sơ đồ luồng dữ liệu và mô tả chi tiết về từng chức năng của hệ thống.
3.1 TỔNG QUAN3.1.1. Giới thiệu chung 3.1.1. Giới thiệu chung
Trong 2 chương đầu tiên, chúng ta đã thấy được ưu điểm của riêng rẽ từng công nghệ. RSS giúp chúng ta có thể thu thập thông tin dễ dàng với định dạng XML, AJAX giúp chúng ta xây dựng ứng dụng với khả năng truyền và nhận dữ liệu bất đồng bộ, tăng tốc cho ứng dụng, Web service giúp chúng ta xây đựng được hệ thống các ứng dụng có khả năng tái sử dụng và khả chuyển về nền tảng. Với sự hỗ trợ của Apache Axis2 server, có thể dễ dàng xây dựng và upload các service cũng như với thư viện của mình, giúp cho client dễ dàng làm việc với các service. Tất cả những thành phần này, sẽ giúp chúng ta tạo nên ứng dụng RSS Reader + AJAX + Web service.
Bây giờ, chúng ta sẽ xem xét các mô hình chung của các RSS Reader hiện tại trên thế giới. Có thể dễ dàng thấy đa số các RSS Reader hiện tại có 2 đặc điếm sau:
Thứ nhất là các ứng dụng dạng Desktop Application, được cài đặt và chạy trên máy của người sử dụng. Loại này cần tới các file thư viện DLL được cài đặt trên máy, như vậy sẽ không có tính liên kết cao.
Thứ hai là các ứng dụng thường được tạo ra một cách khá khép kín với các hệ thống thư viện xác định cho riêng mình: Java application với các file thư viện dành riêng cho java, .Net Application với các file thư viện dành cho .Net.(Hình 3.1)
Hình 3.1 Các ứng dụng Rss Reader thông thường
Với xu hướng công nghệ web 2.0 hiện nay, và kiến trúc SOA đang được phát triển thì cả 2 đặc điểm trên đều đi ngược lại dòng chảy. Vì vậy khi kết hợp các ứng công nghệ trên lại với nhau để xây dựng lên ứng dụng sẽ phù hợp với xu hướng của thế giới. (Hình 3.2)
RSS Lib for .Net
RSS Lib for Java RSS
Hình 3.2 Ứng dụng RSS Reader with Web service
3.1.2 Yêu cầu đặt ra cho ứng dụng
Ứng dụng được xây dựng trên cơ sở các công nghệ mới, vì vậy mục đích mà ứng dụng muốn đạt tới là thể hiện được các điểm mạnh của các công nghệ đó.
• Thể hiện được điểm mạnh của AJAX : Khả năng truyền dữ liệu bất đồng bộ với server. Tăng tốc độ thực thi của ứng dụng, tạo cảm giác tương tác thực cho người sử dụng, giống như khi chạy các ứng dụng trên desktop.
• Thể hiện ưu điểm của web service: Ứng dụng sẽ có phần thu thập dữ liệu từ trên Internet được xây dựng thành dịch vụ, để có thể sử dụng từ các chương trình được viết bằng các ngôn ngữ khác nhau.
3.1.3 Mô hình ứng dụng
Theo những yêu cầu đặt ra, ứng dụng sẽ có 2 module với 2 nhiệm vụ: 1. Web service Module:
Nhận các yêu cầu về địa chỉ các trang cung cấp thông tin rss và trả về là dữ liệu rss của các nguồn đó (đã có sự sắp xếp và phân loại theo chủ đề, theo ngày tháng) Nhận các yêu cầu về quản lý các danh mục thông tin, trả về dữ liệu theo các yêu
cầu đó, và dưới dạng cây thư mục (Tree). Dữ liệu vào: Request từ client
Kho dữ liệu : Internet web site, Database store Dữ liệu ra : Thông tin RSS
2. AJAX Client Module
Hiển thị danh mục các nguồn cung cấp tin
Hiển thị thông tin thu được từ web service trên gia diện
Cung cấp các chức năng liên quan tới quản lý danh mục nguồn thông tin: tạo mới, sửa, xóa.
RSS Lib RSS
Mô hình của ứng dụng được mô tả như hình 3.3.
Hình 3.3 Mô hình luồng thông tin của ứng dụng
User Iterface
(Html, jsp…)
Server
Servlet Web Service
Add Feed Add Cateogry Get Cateogry Get Feed Get Feeds by Date Get All Feeds
RSS provider BBC CNN Google Get and Generate Menu Get and Generate Feed content RSS info Database
Apache Axis server Apache tomcat
3.1.4 Kiến trúc ứng dụng
Với mô hình được phân tích và minh họa trên hình 3.3, dựa vào những công nghệ và hệ thống đã nghiên cứu, kiến trúc của ứng dụng được mô tả như trên hình 3.4.
Hình 3.4 Mô hình kiến trúc của ứng dụng
Như vậy ứng dụng sẽ gồm AJAX Client, Java Servlet và Java Web service. Trong đó, AJAX và Java Servlet tương tác với nhau thông qua QueryString, còn Java Servlet tương tác với Web service bằng SOAP over HTTP.
3.2 SƠ ĐỒ PHÂN CẤP CHỨC NĂNG
Sơ đồ phân cấp chức năng liệt kê đầy đủ các chức năng của hệ thống.
Hình 3.5 Sơ đồ phân cấp chức năng (Function Diagram)
Hệ thống ứng dụng RSS Reader
Xử lý trên WebService
Server Xử lý tại WebService Client
Nhậncategory Nhận một feed xác định Nhận các feed sắp xếp theo category Nhận các feed sắp xếp theo ngày
Gửi yêu cầu và nhận phúc đáp từ WebService
Chuyển đổi định dạng dữ liệu
Hiển thị dữ liệu và tương tác với người sử dụng
Thêm hoặc xoá bớt một
feed
Thêm hoặc xoá bớt một
3.3 SƠ ĐỒ MỨC NGỮ CẢNH
Sơ đồ mức ngữ cảnh (Context Diagram) của ứng dụng được thể hiện trên hình 3.6. Có thể thấy được đối tượng sử dụng hệ thống và đầu vào đầu ra của nó. Kho dữ liệu ngoài: Thông tin từ các web site trên Internet. Đối tượng sử dụng hệ thống: Người sử dụng.
Hình 3.6 Sơ đồ luồng dữ liệu mức ngữ cảnh (Context Diagram)
3.4 SƠ ĐỒ MỨC DƯỚI ĐỈNH
Sau khi có sơ đồ mức đỉnh, đi vào phân tích chi tiết sâu hơn, ta có sơ đồ mức dưới đỉnh và các sơ đồ mức con, các sơ đồ này càng chi tiết, thì các chức năng của hệ thống càng được sáng tỏ.
Hình 3.7 là sơ đồ luồn dữ liệu mức 0.
Hình 3.7 Sơ đồ luồng dữ liệu mức 0 (DFD level 0)
Có thể thấy được vai trò của từng đối tượng trong sơ đồ này (giống như đã miêu tả trong mục 3.1.3). Hình 3.8 và hình 3.9 là sơ đồ luồng dữ liệu phân rã ở mức thấp hơn.
Dữ liệu trên Internet
Người sử dụng 1 Xử lý trên WebServic e Server 2 Xử lý tại WebServic e Client Category Thông tin Thông tin Thông tin Yêu cầu Phúc đáp
Hình 3.8 DFD Function 1 1.1 Nhận 1 Feed Soap Request/Response 1.2 Nhận các Feed theo Category 1.3 Nhận các Feed theo ngày Category Soap Request Soap Request Soap Request Soap Response Soap Response Soap Response Feed Feeds Urls Feeds 1.5 Xoá Feed/ Category 1.4 Thêm Feed/ Category Soap Request Soap Request Soap Response Soap Response
Thêm vào cơ sở dữ liệu
Xoá khỏi cơ sở dữ liệu
Dữ liệu trên Internet Dữ liệu trên Internet
Hình 3.9 là sơ đồ mức 1 của Đối tượng Rss Client
Hình 3.9 DFD (Function 2)
2.1 Gửi yêu cầu
và nhận phúc đáp từ WebService
SOAP yêu cầu/ SOAP phúc đáp
2.2 Chuyển đổi định dạng dữ liệu 2.3 Hiển thị và tương tác với người sử dụng Người sử dụng SOAP SOAP XML XML hoặc HTML Yêu cầu Thông tin QueryString
Mô tả chi tiết các chức năng:
Gửi yêu cầu và nhận phúc đáp từ WebService
Mô tả chung: Gửi SOAP Request lên WebService và nhận SOAP Response từ WebService.
Mô tả chi tiết: Khi người sử dụng gọi một chức năng ở phía giao diện tương tác, servlet WebService Client sẽ được gọi để thực hiện gửi yêu cầu tương ứng cho WebService Server và nhận phúc đáp.
Đầu vào: Yêu cầu của người sử dụng được ký hiệu dưới dạng QueryString gửi tới servlet WebService Client.
Quá trình xử lý: - Nhận và phân tách QueryString để nhận biết các tham số cần thiết
- Dựa vào Method number quy ước thực hiện các chức năng tương ứng.
- Xây dựng và gửi đi SOAP Request cũng như nhận về SOAP Response dưới dạng OMElement.
Đầu ra: SOAP Response.
Chuyển đổi định dạng dữ liệu
Mô tả chung: Chuyển đổi từ dạng dữ liệu WebService Server trả về sang định dạng phía Client cần để hiển thị lên giao diện.
Mô tả chi tiết: SOAP Response nhận về sau khi bóc tách lớp Envelope SOAP bên ngoài sẽ nhận được 1 định dạng XML xác định. Module này thực hiện chuyển định dạng XML nhận được sang dạng XML hay HTML thích hợp để truyền cho phần giao diện thực hiện hiển thị lên Web.
Đầu vào: Nội dung nhận được từ SOAP Response có định dạng XML
Quá trình xử lý: Kết hợp với một file XSLT xác định trong từng trường hợp để tạo ra định dạng XML hoặc HTML tương ứng.
Đầu ra: Dữ liệu dưới dạng XML hoặc HTML cần để hiển thị lên giao diện.
Hiển thị dữ liệu và tương tác với người sử dụng
Mô tả chung: Nhận yêu cầu của người sử dụng và hiển thị thông tin tương ứng.
Mô tả chi tiết: Khi người sử dụng đưa ra yêu cầu, hệ thống sẽ gửi lên servlet WebService Client, khi kết quả được trả về, giao diện sẽ thực hiện hiển thị lên màn hình.
Các chức năng người sử dụng có thể yêu cầu: - Xem 1 feed xác định.
- Xem các feed sắp xếp theo Category. - Xem các feed sắp xếp theo ngày tháng.
- Xoá/thêm 1 feed. - Xoá/thêm 1 folder.
Đầu vào: Yêu cầu của người sử dụng.
Quá trình xử lý: - Nhận yêu cầu gửi lên servlet.
- Nhận Response dưới dạng thích hợp, hiển thị lên màn hình. Category thực hiện hiển thị bằng JavaScript, feed hiển thị bằng AJAX.
Đầu ra: Thông tin hiển thị lên màn hình.
Nhận 1 feed
Mô tả: Lấy 1 feed xác định
Đầu vào: SOAP Request chứa id của feed đó trong cơ sở dữ liệu.
Quá trình xử lý: - Lấy url của feed từ cơ sở dữ liệu dựa vào id. - Lấy feed trên internet dựa vào url
Đầu ra: SOAP Response chứa nội dung của feed.
Nhận các feed sắp xếp theo Category
Mô tả: Lấy tất cả các feed trong một folder xác định
Đầu vào: SOAP Request chứa id của folder đó trong cơ sở dữ liệu.
Quá trình xử lý: - Lấy các url của các feed từ cơ sở dữ liệu dựa vào id của folder cha.
- Lấy các feed trên internet dựa vào các url
Đầu ra: SOAP Response chứa nội dung của các feed.
Nhận các feed sắp xếp theo ngày tháng
Mô tả: Lấy tất cả các feed trong Category sắp xếp theo ngày tháng
Đầu vào: SOAP Request gọi phương thức getAllByDate
Quá trình xử lý: Lấy tất cá các feed có trong cơ sở dữ liệu từ Internet và sắp xếp theo thời gian
Đầu ra: SOAP Response chứa nội dung của các feed.
Thêm một feed mới
Mô tả: Người sử dụng có thể thêm một feed mới vào Category.
Đầu vào: SOAP Request chứa id của folder cha mà feed thêm vào, tên của feed và url của feed.
Quá trình xử lý: Kiểm tra xem thông tin có hợp lệ không và add vào cơ sở dữ liệu
Đầu ra: SOAP Response chứa true nếu thành công hoặc false nếu không thành công.
Thêm một folder mới
Mô tả: Người sử dụng có thể thêm một folder mới vào Category.
Đầu vào: SOAP Request chứa id của folder cha mà folder thêm vào, tên của folder.
Quá trình xử lý: Kiểm tra xem thông tin có hợp lệ không và add vào cơ sở dữ liệu
Đầu ra: SOAP Response chứa true nếu thành công hoặc false nếu không thành công.
Xoá một feed
Mô tả: Người sử dụng có thể xoá feed trong Category
Đầu vào: SOAP Request chứa id feed cần xoá.
Quá trình xử lý: Kiểm tra xem thông tin có hợp lệ không và update cơ sở dữ liệu
Đầu ra: SOAP Response chứa true nếu thành công hoặc false nếu không thành công.
Xoá một folder
Mô tả: Người sử dụng có thể xoá folder trong Category
Đầu vào: SOAP Request chứa id folder cần xoá.
Quá trình xử lý: Kiểm tra xem thông tin có hợp lệ không và update cơ sở dữ liệu
Đầu ra: SOAP Response chứa true nếu thành công hoặc false nếu không thành công.
Kết luận:
Trong chương này chúng ta đã thực hiện phân tích đưa ra các sơ đồ phân cấp chức năng, các sơ đồ luồng dữ liệu và phân tích chi tiết các chức năng của hệ thống. Sau đây ta sẽ thực hiện pha tiếp theo là thiết kế hệ thống.
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG
Sau khi hoàn thành quá trình phân tích hệ thống, ta tiếp tục thực hiện thiết kế giao diện của ứng dụng, thiết kế cơ sở dữ liệu, dữ liệu đầu vào và đầu ra, đồng thời liệt kê các gói thư viện của java hỗ trợ khi xây dựng ứng dụng.
4.1 THIẾT KẾ GÓI CHỨC NĂNG4.1.1 Thư viện RSS lib 4.1.1 Thư viện RSS lib
Trong quá trình tìm hiểu và thực hiện ứng dụng này, các thư viện về RSS hay và