Tùy thuộc vào tính chất của ứng dụng, lập trình viên có thể quyết định cách thức truy cập vào cơ sở dữ liệu thong qua 1 web tier hoặc thông qua business tier còn gọi là EJB tier : Môi tr
Trang 1Trường Đại học Công nghệ Thông tin
Khoa Công nghệ Phần mềm
*****
Chuyên đề: Lập trình J2EE
Giáo viên hướng dẫn: Ths Huỳnh Ngọc Tín
Nhóm 06:
1. Vũ Ngọc Hưng 06520197
2. Vương Hà Thanh Mẫn 06520282
BÁO CÁO CUỐI HỌC KỲ
ĐỀ TÀI:
KIẾN TRÚC NỀN TẢNG J2EE
******
Trang 2Mục lục:
PHẦN A: KIẾN TRÚC NỀN TẢNG J2EE 3
1 Kiến trúc J2EE 3
2 Hệ thống ứng dụng J2EE 4
3 Các kỹ thuật liên quan đến kiến trúc J2EE 5
3.1 Các loại container trong J2EE 5
3.2 Các kỹ thuật liên quan đến kiến trúc 6
3.2.1 Công nghệ EJB 7
3.2.2 Công nghệ Servlet 7
3.2.3 Công nghệ JSP 7
3.2.4 Java API cho dịch vụ thông điệp 7
3.2.5 Java API cho giao tác 7
3.2.6 Java API cho mail 8
3.2.7 Kiến trúc hoạt tác JavaBean 8
3.2.8 Java API cho xử lý XML 8
3.2.9 Java API cho giao thức gọi hàm từ xa dựa trên XML 9
3.2.10 Java API cho giao thức SOAP kèm thông tin 9
3.2.11 Java API cho sổ đăng ký XML 10
3.2.12 Kiến trúc bộ kết nối J2EE 10
3.2.13 Java API cho kết nối cơ sở dữ liệu 10
3.2.14 Giao diện quản lý thư mục và định danh trong Java 11
3.2.15 Dịch vụ cấp phép và xác thực người dùng trong Java 12
3.2.16 Kỹ thuật giản đơn tích hợp ứng dụng J2EE 12
PHẦN B: TRIỂN KHAI ĐỒ ÁN TASKMANAGER 13
1 Lời nói đầu: 13
2 Project TaskManager 13
2.1 Giới thiệu 13
2.2 Yêu cầu chức năng 13
2.3 Cấu trúc chương trình 15
2.4 Chạy chương trình phía server 16
2.5 Chạy chương trình phía client 17
Trang 3PHẦN A: KIẾN TRÚC NỀN TẢNG J2EE
Nền tảng J2EE dựa trên các ứng dụng phân tán Nó là kiến trúc phân tán
hướng thành phần, trong đó các thành phần được triển khai và thực thi trong 1
container ( thành phần là 1 đơn vị nhỏ nhất có khả năng kế thừa và chúng độc
lập với nhau ) Cũng là một ứng dụng java tất nhiên J2EE cũng thừa hưởng được tính chất của 1 ứng dụng thuần java như : viết một lần, chạy khắp nơi, độc lập
hệ điều hành, độc lập server triển khai Ngoài ra J2EE còn có các ưu điểm nổi
bật như: là 1 ứng dụng với kiến trúc đa tầng, hoạt động trong môi trường phân
tán, năng động, khả chuyển, có khả năng giao tiếp tốt với các nền tảng khác như CORBA, NET
Kiến trúc đa tầng: đây là nhân tố cơ bản trong kiến trúc của J2EE Nhân
tố này giúp cho lập trình viên có thể tạo ra các component hoạt động, trao đổi
thong tin với nhau ở các môi trường máy ảo khác nhau Tùy thuộc vào tính chất của ứng dụng, lập trình viên có thể quyết định cách thức truy cập vào cơ sở dữ
liệu thong qua 1 web tier hoặc thông qua business tier( còn gọi là EJB tier ):
Môi trường phân tán: trong mô trình kiến trúc của J2EE, môi trường
này giúp cho các thành phần hoạt động trong các máy áo khác nhau có khả năng giao trao đổi thông tin với nhau Đây cũng là một nhân tố hết sức quan trọng
Trang 4trong 1 ứng dụng J2EE Ví dụ như việc sử dụng cơ sở dữ liệu phân tán để giải
quyết lại với việc sự gia tăng nhanh kích thước của cơ sở dữ liệu
Năng động khả chuyển: một ứng dụng J2EE có khả năng chạy trên mọi
hệ điều hành và mọi server hỗ j2ee Ngoài ra ta có thể tùy biến ứng dụng j2ee
mà không cần phải chỉnh sửa hay biên dịch lại source code
Giao tiếp với các nền tảng khác: đây là 1 đặc điểm rất quan trọng của
ứng dụng J2EE giúp cho các thành phần được viết bằng ngôn ngữ java có khả
năng giao tiếp với các thành phần được viết bằng các ngôn ngữ khác J2EE hỗ
trợ giao tiếp với 2 nền tảng là CORBA( Common Object Request Broker
Architecture ) và NET
J2EE hỗ trợ cho ta rât nhiều công nghệ để xây dựng nên các thành phần
cho các tier khác nhau như Client Technologies, Presentation Technologies(web tier), Business Technologies(ejb tier), và một số các công nghệ khác như JNDI, JMS, JTA, JAXP, …
Với Client Technologies ta có thể xây dựng nên 2 loại client đó là
application client và web client Các application client là các ứng dụng được
viết bằng ngôn ngữ java, các ứng dụng này có khả năng giao tiếp với các tier
khác, như trao đổi thông tin trực tiếp với Business tier, hoặc với web tier thong qua giao thức HTTP Các web client là các ứng dụng sử dụng các giao thức
HTTP để giao tiếp với các ứng dụng ở Server Nó có thể là 1 ứng dụng có khả
năng gửi HTTP request hoặc 1 web browser
Presentation Technologies còn gọi là kĩ thuật hiển thị ở tầng web tier Nó
hỗ trợ lập trình viết tạo nên các thành phần ở server có khả năng nhận các
request từ client và tương tác trực tiếp( hoặc thong qua ejb tier ) với cơ sơ dữ
liệu Lập trình viên có thể tạo nên các thành phần này bằng servlet hoặc jsp
Servlet đơn thuần là 1 class java có khả năng tiếp nhận các request từ client JSP
là 1 dạng file chứa các đoạn mã, chúng được dịch sang servlet bởi JspEngine
Servlet và Jsp đều có khả năng truy cập trực tiếp vào cơ sở dữ liệu(EIS tier)
hoặc thong qua EJB tier Ngoài ra ta cũng có thể sử dụng JavaBean để tạo ra các class sử dụng cho servlet và jsp
Business Technologies các thành phần được xây dựng bằng công nghệ
này để thực thi các business logic của ứng dụng Trong J2EE việc phát triển các thành phần này sử dụng công nghệ gọi là Enterprise Java Bean
JDBC Technologies đây là cách thức mà Middle tier(web tier và ejb
tier ) sử dụng để truy cập vào cơ sơ dữ liệu Đối với J2EE việc truy cập vào cơ
sơ dữ liệu bắt buộc phải được thực hiện thong qua JDBC API
Naming Service do các J2EE được triển khai trong môi trường phân tán
nên các component sẽ nằm ở các máy ảo khác nhau Chính vì vậy cần phải có
Trang 5một cách thức để xác định vị trí của các thành phần đó Và đây cũng chính làm
nhiệm vụ của Naming Service ( còn gọi là JNDI: Java Naming and Directory
Interface )
Java Message Service( JMS ) đây là phương thức trao đổi thong tin bất
đồng bộ giữa các component Với JMS các thành phần có thể trao đổi thông tin theo mô hình 1-1( point -point ) hoặc 1-nhiều(publish-subscribe )
Transaction Service( JTA ) việc quản lí các giao tác của các thành phần
trong ứng dụng là rất quan trọng, giao tác này thực hiện trên cở sở sử dụng Java Transaction API
XML Processing Service( JAXP ) Việc xử lí XML là 1 phần tính hợp
vào J2EE Nó được sử dụng để parse các XML file Nó cũng support các công
cụ như SAX( Simple API for XML parsing ), DOM( Document Object Model ), XSLT( XML Stylesheet Language for Transformation )
Ngoài ra còn một số các công nghệ khác như RMI, Java mail, …
3. Các kỹ thuật liên quan đến kiến trúc J2EE
J2EE là nền cung cấp các dịch vụ, các hàm giao tiếp(API) và các giao
thức để triển khai các ứng dụng đa tầng
3.1 Các loại container trong J2EE
Server J2EE cung cấp 2 container : Web Container và EJB container
Trang 6+ EJB (Enterprice java bean) container : quản lý và thực thi các thành phần
enterprice bean
+ Web Container : quản lý và thực thi các thành phần JSP và Servlet
+ Application Client Container : quản lý và thực thi các thành phần phía client
(ví dụ như applet)
3.2 Các kỹ thuật liên quan đến kiến trúc
Trang 73.2.1 Công nghệ EJB
Enterprise JavaBean Technology :Thể hiện vật lý của tầng EJB là
mô-đun EJB bao gồm một hay nhiều linh kiện EJB, EJB nếu xét đơn giản là
một lớp Java bao gồm đoạn mã chứa những phương thức và thuộc tính phục
vụ cho một thao tác nghiệp vụ (một số điểm cơ bản về EJB đã được giới
thiệu trong phần trước)., EJB có thể đơn sử dụng đơn lẻ hay cộng tác với
EJB khác Công nghệ EJB bao gồm các chuẩn, phương pháp và kỹ thuật để
xây dựng nên EJB, như đã đề cập, EJB là phần quan trọng nhất trong kiến
trúc J2EE Có 3 loại EJB: bean phiên làm việc, bean thực thể, bean hướng
thông điệp EJB thường tương tác với CSDL Một trong những thuận lợi của
bean thực thể là chúng ta không cần viết những đoạn mã SQL hay dùng kỹ
thuật kết nối JDBC để truy cập CSDL, những thao tác này đã được thùng
chứa EJB thực hiện thay Tuy nhiên, người dùng có thể thay thế thao tác kết
nối & lưu trữ mặc định của thùng chứa bằng cách sử dụng kỹ thuật JDBC
theo những yêu cầu riêng
3.2.2 Công nghệ Servlet
Java Servlet Technology : Nhắc lại, công nghệ servlet giúp xử lý những
yêu cầu và trả kết quả về cho phía khách qua giao thức HTTP, servlet mở rộng
chức năng của máy chủ theo mô hình yêu cầu – đáp ứng (request – response)
Mặc dù servlet có thể đáp ứng bất kỳ dạng yêu cầu nào từ khách nhưng nó
thường được ứng dụng nhiều trong ứng dụng web
3.2.3 Công nghệ JSP
JavaServer Page Technology : Công nghệ JSP giúp bạn nhúng đoạn
mã Java servlet vào trong tập tin tài liệu dạng văn bản, nói cách khác, một
tập tin JSP chứa 2 dạng văn bản: dữ liệu tĩnh (dữ liệu văn bản theo khuôn
mẫu HTML, WML, XML) và những đoạn mã Java (tức đoạn mã JSP) xử lý
động nội dung của trang web Khi thực thi, JSP được biên dịch thành servlet
thực hiện những chức năng vốn có của servlet, vì thế về bản chất, JSP là
servlet nhưng hỗ trợ việc lập trình trên web dễ dàng hơn
3.2.4 Java API cho dịch vụ thông điệp
Java Message Service API – JMS API : JMS API là chuẩn và kỹ thuật
cho phép những linh kiện có thể đọc, tạo, gởi và nhận thông điệp cho nhau JMS API giúp các linh kiện, dịch vụ trong môi trường phân tán tương tác nhau một
cách đáng tin cậy và có thể theo giao tiếp bất đồng bộ
3.2.5 Java API cho giao tác
Java Transaction API – JTA :JTA cung cập giao diện lập trình chuẩn
cho việc phân ranh giới các giao tác, nói cách khác, JTA quản lý các giao tác
Trang 8khi có sự cạnh tranh truy xuất hay truy xuất đồng thời giữa các linh kiện,
dịch vụ
Lưu ý:
Giao tác (transaction): là tập một số tác vụ, thực hiện một giao tác
như thực hiện một tác vụ tức thực hiện nhiều tác vụ như thực hiện một tác
vụ, vì thế, giao tác là một đơn vị xử lý không thể phân chia Một giao tác chỉ
có hiệu ứng khi đã được commit (xác nhận)
Rollback (hủy bỏ): hủy bỏ một số tác vụ đã được thực hiện trong một
giao tác rồi trả giao tác về trạng thái ban đầu khi chưa thực hiện các tác vụ
này, xem như giao tác chưa được thực hiện
Commit (xác nhận): xác nhận giao tác đã được thực hiện
Kiến trúc J2EE đưa ra phương thức commit tự động (auto commit) để xử lý
việc commit hay rollback giao tác, commit tự động nghĩa là sau mỗi thao tác
cập nhật dữ liệu, ứng dụng đương nhiên được commit, bất kỳ ứng dụng nào
khác khi đang xem CSDL sẽ thấy được những dữ liệu đã được cập nhật này
Tuy nhiên, nếu trong ứng dụng có các tác vụ truy xuất CSDL phụ thuộc lẫn
nhau (đọc – ghi, ghi – đọc, ghi – ghi) thì chúng ta phải sử dụng JTA để xây
dựng và quản lý các giao tác
3.2.6 Java API cho mail
JavaMail API :Ứng dụng JEE sử dụng JavaMail API để gởi mail,
JavaMail API gồm hai phần: Giao diện mức ứng dụng hỗ trợ các linh kiện
gởi mail và Giao diện bộ cung cấp dịch vụ Nền tảng J2EE cung cấp
JavaMail với bộ cung cấp dịch vụ cho phép linh kiện gởi mail qua internet
3.2.7 Kiến trúc hoạt tác JavaBean
JavaBeans Activation Framework – JAF : JAF cung cấp những dịch
vụ chuẩn để quyết định kiểu của một mẫu dữ liệu tùy ý, gói gọn các truy cập
đến nó, phát hiện các thao tác dành sẵn trên nó và tạo các JavaBean để thực
hiện các thao tác này JavaMail sử dụng JAF
3.2.8 Java API cho xử lý XML
Java API for XML Processin – JAXP : JAXP cung cấp các phương
thức xử lý XML theo một số mô hình sau:
- DOM: Document Object Model – Mô hình đối tượng tài liệu
- SAX: Simple API for XML – Giao diện lập trình ứng dụng đơn giản cho
XML
- XSLT: Extensible Stylesheet Language Transformation – Chuyển đổi ngôn
ngữ thẻ mở rộng
JAXP cho phép ứng dụng phân tích và chuyển đổi tài liệu XML độc lập với
Trang 9thao tác bên dưới, điều này có nghĩa là người dùng chỉ cần dùng JAXP xử lý
tài liệu XML qua các giao diện (interface) chuẩn mà không cần biết chi tiết
về kỹ thuật bên trong Theo đó, mô hình JAXP đa phần định nghĩa các giao
diện, người dùng phải sử dụng gói phần mềm của hãng thứ ba nào đó đã thi
công các giao diện này để xử lý tài liệu XML
Lưu ý: J2SE, J2EE, J2ME… nói chung là công nghệ Java do công ty Sun
phát triển, trong đó với một số gói phần mềm, Sun chỉ đưa ra kiến trúc cấp
cao thông qua các giao diện, việc thi công hay cài đặt cụ thể các giao diện
này do hãng/công ty/tổ chức/nhóm/cá nhân khác – thuật ngữ gọi là hãng thứ
ba thực hiện Không phải Sun không thể cài đặt được một số gói nhưng họ
để cho hãng thứ ba thực hiện nhằm tạo nên tính mở rất tốt cho công nghệ
Java, hãng thứ ba có thể cài đặt giao diện tốt hơn và Sun cũng nhẹ gánh, khi
đó Sun chỉ đóng vai trò kiến trúc sư
Các gói phần mềm thi công các giao diện JAXP thường là những bộ phân
tích và bộ xử lý XML (XML parser và XML processor) do hãng thứ ba phát
triển JAXP sử dụng không gian tên (namespace) để tránh trùng tên thẻ khi
xây dựng lược đồ XML
3.2.9 Java API cho giao thức gọi hàm từ xa dựa trên XML
Java API for XML-Based RPC – JAX-RPC :(dùng phát triển dịch vụ
web) JAX-RPC sử dụng giao thức SOAP và HTTP , theo đó phía khách thực
hiện lời gọi hàm xa bằng cách gởi thông điệp theo chuẩn XML qua internet
JAX-RPC cũng hỗ trợ WSDL, vì thế bạn có thể xuất khẩu và nhập khẩu tài
liệu WSDL Với JAX-RPC và WSDL, phía khách tương tác với dịch vụ độc
lập với nền dù Java hay NET, ví dụ: phía khách trên nền NET có thể thực
hiện lời gọi hàm xa với dịch vụ web trên nền Java, ngược lại một dịch vụ
web trên nền Java vẫn tương tác được với phía khách trên nền NET
JAX-RPC dựa trên giao thức vận chuyển HTTP Hơn thế nữa, JAX-JAX-RPC hỗ trợ
xây dựng các dịch vụ kết hợp HTTP với công nghệ Java trên SSL (Secure
Socket Layer –Tầng lỗ cắm bảo mật) và giao thức TSL (Transport Layer
Security – Bản mật tầng vận chuyển) giúp thiết lập sự xác thực
(authentication) căn bản hay hỗ tương trên mạng SSL và TSL bảo đảm tính
toàn vẹn của thông điệp gởi trên mạng bằng kỹ thuật mã hóa dữ liệu ở khách
và khả năng xác thực ở chủ
Xác thực là phương cách bảo đảm một người dùng/nhóm/đơn vị/tổ chức có
được phép truy cập những thông tin cần được bảo vệ hoặc nhạy cảm hay
không nhằm ngăn cản việc sử dụng, khai thác hay vận chuyển thông tin một
cách bất hợp pháp Vận chuyển thông tin có khả năng bị xâm phạm hay bị
sử dụng sai mục đích sẽ bị chặn lại, vì thế, việc cấu hình dịch vụ web
JAX-RPC rất quan trọng để bảo vệ dữ liệu khi vận chuyển
3.2.10 Java API cho giao thức SOAP kèm thông tin
SOAP with Attachments API for Java – SAAJ :(dùng phát triển dịch
vụ web) SAAJ là một API mức thấp giữ vai trò nền tảng cho JAX-RPC
Trang 10SAAJ cho phép các thông điệp tương thích với đặc tả SOAP có kèm theo
thông tin ghi chú Hầu hết các nhà phát triển không dùng SAAJ API, thay
vào đó họ sử dụng JAX-RPC ở cấp cao hơn
3.2.11Java API cho sổ đăng ký XML
Java API for XML Registries – JAXR :(có thể dùng phát triển dịch
vụ web) Các công ty hay tổ chức cần công bố thông tin về dịch vụ/sản phẩm
của họ lên internet, điều này được thực hiện qua việc đăng ký dịch vụ vào sổ
đăng ký (registry) JAXR giúp bạn truy cập các sổ đăng ký thông thường
hay sổ đăng ký nghiệp vụ qua web JAXR hỗ trợ chuẩn lưu trữ và đăng ký
ebXML đồng thời tăng cường vai trò đặc tả UDDI Với JAXR, nhà phát
triển có thể truy cập sổ đăng ký theo hai công nghệ quan trọng (ebXML và
UDDI) chỉ với một giao diện lập trình duy nhất
Thêm vào đó, các doanh nghiệp/tổ chức có thể chia sẻ các sản phẩm/tài liệu
trên mạng hay truy tìm các tài liệu/sản phẩm khác đã được công bố Ví dụ:
một nhóm xây dựng một lược đồ XML cho một loại tài liệu, hai doanh
nghiệp nếu như đồng ý lược đồ chuẩn này cho đơn đặt hàng, họ hoàn toàn có
thể truy cập thông tin sản phẩm lẫn nhau bởi lược đồ này được lưu trong sổ
đăng ký nghiệp vụ
3.2.12Kiến trúc bộ kết nối J2EE
J2EE Connector Architecture :Những nhà cung cấp công cụ J2EE và
nhà tích hợp hệ thống sử dụng kiến trúc bộ kết nối J2EE để tạo các bộ thích
nghi tài nguyên (resource adapter) – bộ thích nghi tài nguyên giúp ứng dụng
J2EE truy cập hệ thống thông tin (CSDL, mail…) ở tầng EIS, nhờ thế các hệ
thống thông tin ở tầng EIS có thể được gắn vào bất kỳ sản phẩm J2EE nào
Nói cụ thể, một bộ thích nghi tài nguyên là một linh kiện phần mềm cho
phép các linh kiện J2EE truy cập và tương tác với các hệ quản trị tài nguyên
nền tảng tại tầng EIS Một bộ thích nghi tài nguyên chỉ phù hợp với một hệ
quản trị tài nguyên của nó, vì thế sẽ có mỗi bộ thích nghi tài nguyên cho
từng kiểu CSDL hay từng hệ quản trị tài nguyên khác nhau
Kiến trúc bộ kết nối J2EE cung cấp sự tích hợp giữa dịch vụ web J2EE và hệ
thống EIS với phương thức đồng bộ hay bất đồng bộ theo tiêu chuẩn: bảo
mật, hiệu năng cao, dễ mở rộng, dựa trên thông điệp và hỗ trợ giao tác
Thông qua kiến trúc bộ kết nối J2EE, những ứng dụng hiện tại và hệ EIS
tích hợp có thể được cung cấp cho doanh nghiệp như là các dịch vụ web dựa
trên XML có sử dụng công nghệ JAX-RPC và mô hình linh kiện J2EE Vì
thế, JAX-RPC và kiến trúc bộ kết nối là những công nghệ bổ sung cần thiết
cho tích hợp ứng dụng J2EE và cho nghiệp vụ của người dùng cuối
3.2.13 Java API cho kết nối cơ sở dữ liệu
JDBC API:JDBC API giúp bạn thực hiện câu truy vấn SQL đến hệ
quản trị CSDL từ bên trong hệ thống Java Theo cơ chế lưu trữ bền vững