Wednesday, September 10, 2014

Java EE Security

1. Authentication (Tính xác thực):


     Authentication được hiểu là quá trình xác thực thông tin, bạn hoàn toàn có thể đánh giá thông tin đang truy cập của một người (một tài khoản) đang truy cập vào hệ thống đã được xác định.

     Giả sử nếu không có quá trình này, bạn không thế xác định được thông tin tài khoản đó, đồng nghĩa với đó là không thể xem được thông tin. Và quan trọng nhất, khi có ai truy cập phá hoại Server thì bạn không thể nào truy tìm được để xử lí.


Mô hình minh họa cho quá trình Authentication.


Trong quá trình diễn ra, cần phải có yêu cầu xác thực. Sẽ có hai cách để làm việc này:

      - Digital certificate-based authentication có thể được sử dụng trên các máy chủ, khách hàng, hoặc cả hai, tùy thuộc vào nhu cầu của ứng dụng.

       - Digital certificates được sử dụng để xác định người dùng cuối cùng, máy chủ, và các thành phần phần mềm khác.


2. Access Control Lists (ACLs):

        - Hiển thị danh sách thông báo lượng người truy cập.

        - Có thể quản lí được các danh sách này.

        - Với mỗi một tập tin ACL riêng biệt thì nó có thể được tạo bởi nhiều mục. Trong đó có chứa các tài nguyên và tính được lượng người truy cập vào tài nguyên đó.

Mô hình hoạt động của Access Control Lists (ACLs)


3. Realms

    - Nói đơn giản thì đây là một cơ sở dữ liệu dành cho những người muốn sử dụng tài nguyên. Điều đó để xác định giá tri của một ứng dụng web.

    - Server authentication service có khả năng quản lí người sử dụng trong đó, gộp User và Group.


 4. Users and Principals:

      - Một người sử dụng (User) là một cá nhân được quy định tại các máy chủ ứng dụng yêu cầu trước đó.


5. Groups and Roles:

      -Groups (Nhóm) là một tập hợp các người dùng xác thực, được phân loại và có định nghĩa rõ ràng.

      -Roles (Vòng tròn) được hiểu rộng hơn so với Group, nó có thể bao gồm nhiều User theo nhóm.
      -Roles có thể tương tác với các Group, quản lí đối tượng, vai trò của họ trong nhóm để có thể dễ dàng xem xét và sàng lọc các User.


Mô hình hoạt động của Groups and Roles


Assignment Using JPA, EJP & JSF

Tạo 1 Web Application


Bước 2: Tạo tầng làm việc với CSDL(JPA)







             Kết quả:

Bước 3: Làm việc với CSDL



  
   Kết quả:

Monday, September 8, 2014

MDB: Message Driven Bean

1. Giới thiệu:

   A Message-Driven Bean (MDB) là một bean doanh nghiệp hóa để có thể cho phép các ứng dụng Java EE đồng bộ hóa quá trình message. MDB hoạt động tương tự như JMS: Java Message Service nhưng nhận tin nhắn dễ dàng hơn.

  Để dễ dàng hơn chúng ta sẽ làm một ứng dụng nhỏ có sử dụng MDB.


Sơ đồ thể hiện vai trò của MDB


2. Thực hành:

   Đề bài được giao cho lần này:

"Alpha is the name of a mail-order company. You are part the team that is developing a solution for automating the processes involved between order logging, invoicing, and the shipment of goods. You have to develop a message-driven bean that acts as an intermediary between the sub-systems that constitute the solution. Each of the subsystems is implemented in the form of entity beans. The first subsystem is where the orders are logged. As soon as the order is registered, a message is sent from the Order subsystem to the message-driven bean. The message-driven bean, in turn calls the other two subsystems, Invoicing and Shipping to proceed with the order. In other words, the message-driven bean that you develop should act as a trigger for the other two subsystems."
"Bạn là thành viên trong một công ty nhận order thư điện tử. Các đơn hàng đã đặt sẽ được lưu vào hệ thống và nhiệm vụ của bạn sẽ là gửi những bức thư đó tới nơi họ đã yêu cầu."


Trước tiên khi bắt đầu làm demo, bạn cần sẵn sàng chạy Server GlassFish trong NetBeans. Nếu bạn chưa cài đặt được thì hãy đọc bài viết: Install Glassfish to Windows Service Applications




 localhost:4848 trên trình duyệt để chạy Server GlassFish





Trong giao diện JMS Destination Resources, tạo mới





Đặt tên cho Resource






Kết quả sau khi tạo xong







Tiếp theo vào NetBeans để tạo mới Project





Tiếp tục tạo một class JSF Managed Bean (hoặc vào Other - JavaServer Beans)




Sau khi tạo xong, trong class đó, bạn click chuột phải và chọn Send JMS Message như hình dưới





Giao diện Send JMS Message hiện ra, nhấn tiếp OK




Kết quả sau khi add





Gợi ý thêm các biến cần thiết



Trang giao diện JSF




Tiếp theo ta tạo một EJB Module




Ta tiếp tục tạo một Message-Drive Bean




Chạy thử ứng dụng




3. Nhận xét:

Nhìn chung MDB có các cấu trúc và tính chất giống như JMS. Nhưng như mình nói ở trên thì MDB có nhiều chức năng hỗ trợ tốt hơn hẳn so với JMS. Và điều đặc biệt mà MDB có đó là nó có thể xử lí nhiều yêu cầu cùng một lúc thay vì hạn chế một yêu cầu như JMS.

Saturday, September 6, 2014

JMS: Java Message Service

1. Giới thiệu:

   Java Message Service là một dạng API cho phép gửi tin nhắn giữa hai và nhiều client với nhau, hay được hiểu là trao đổi giữa các khách hàng.

   Nhìn chung JMS có thể dễ dàng cho phép tạo, gửi và nhận các tin nhắn, thông tin. Hiện nay JMS đã cho phép cung cấp phiên bản 2.0 vào tháng 5 năm 2013.


Mô hình hoạt động của JMS



2. Thực hành:

"Demo TechSchool Solutions designs software systems for schools. One of the problemsthat the schools face is teacher absenteeism or teachers taking leaves on a short notice. The schools find it difficult to call substitute teachers in such a short time. TechSchool Solutions is planning to build a system which would enable the school teachers to request for leaves using the school portal. The system would then send an e-mail to all the substitute teachers that have been registered in the system. As a member of the development team, you are required to build the JMS-based module. Your tasks involve developing a session bean that acts as a message listener and receives a message from the JMS queue whenever a teacher puts in a leave request. The session bean, then calls other modules that handle rest of the processes."


"Thiết kế một phần mềm hệ thống dành cho trường học. Một trong vấn đề hiện nay mà nhà trường phải đối mặt đó là việc giáo viên xin nghỉ đột xuất. Và nhiệm vụ của bạn là phải làm một ứng dụng cho phép nhà trường gửi thông tin (email) tới các học sinh thông báo việc giáo viên thay thế. 
Là một thành viên trong nhóm phát triển, bạn cần xây dựng ứng dụng dựa trên mô hình JMS. Với session bean, có thể gọi các module khác nhau để xử lí các quá trình diễn ra."



Trước tiên khi bắt đầu làm demo, bạn cần sẵn sàng chạy Server GlassFish trong NetBeans. Nếu bạn chưa cài đặt được thì hãy đọc bài viết: Install Glassfish to Windows Service Applications




Gõ localhost:4848 trên trình duyệt để chạy Server GlassFish





Trong giao diện JMS Destination Resources, tạo mới





Đặt tên cho Resource




Kết quả khi tạo xong





Tiếp theo vào NetBeans để tạo mới Project





Tiếp tục tạo một class JSF Managed Bean (hoặc vào Other - JavaServer Beans)




Sau khi tạo xong, trong class đó, bạn click chuột phải và chọn Send JMS Message như hình dưới




Giao diện Send JMS Message hiện ra, nhấn tiếp OK




Kết quả hiển thị sau khi add xong





Khai báo các biến





Tiếp theo chúng ta sẽ tạo giao diện, tạo một JSF page để làm việc này



Gõ dòng lệnh để tạo giao diện



Tạo tiếp một Web Application khác




Tạo các class tương tự như Message Server ở trên




Giao diện JSF




Chạy ứng dụng trên Web


Bạn có thể tải demo trên: JMSMessage


3. Nhận xét: 
            Với JMS, bạn có thể dễ dàng tạo, nhận, gửi dễ dàng. Tuy nhiên điều đáng tiếc của JMS trong Project đó là không thể xử lí được nhiều yêu cầu cùng một lúc.

Wednesday, September 3, 2014

Create & Use Session bean

Về bài ngày hôm nay, chúng ta sẽ làm việc với Session Bean trong Java. Mình đã từng giới thiệu qua về Session Bean trong bài viết Introduction to Java EE & EJB.


1. Giới thiệu:

           Session Bean có hai loại đó là Stateful hoặc Stateless. Với Stateful beans, EJB container có thể lưu dữ liệu ở bên trong cũng như thay mặt chính Client (khách hàng) để gọi method. Trong khi đó với Stateless beans, Client chỉ có thể gọi bất kì một trường hợp có sẵn trong Java beans.


          Cụ thể hơn, với Stateless Session Bean cho phép chứa các nghiệp vụ logic để công khai ra bên ngoài và có thể cho phép các hệ thống khác truy cập dễ dàng.


Vòng đời hoạt động của Stateless Session Bean

          Còn với Stateful Session Beans, cơ chế hoạt động giống với Stateless ở trên. Duy chỉ có điểm khác đó là với lần sử dụng sau vẫn lưu giá trị của lần trước đối với người dùng đó. Còn ở Stateless Session Bean thì không phân biệt điều này.


Vòng đời hoạt động của Stateful Session Bean


2. Thực hành:


     Ta sẽ làm một demo nhỏ để học được cách tạo và sử dụng được các loại của Session bean. Bắt đầu với demo làm một phương pháp tính toán.

 
                                                   Tạo một Project và đặt tên cho nó




Đặt tùy chọn trước khi tạo Project




Chọn JavaServer Faces




Tạo một file mới trong Source Package






Thiết lập tùy chọn cho file Session Bean này





Sau khi tạo xong EJB, bước tiếp theo bạn cần làm là tạo một file mới JSF Bean như trong hình dưới




Thêm lệnh view trong class mới tạo




Khai báo các biến cần trong Project




Thiết kế giao diện cho trang home để hiển thị




Chạy thử kết quả



Bạn có thể tải lại demo trên tại đây: CalculatorUsingEJB


3. Nhận xét:


   Nhìn chung bài viết trên hướng dẫn bạn cách sử dụng Session Bean trong java với hai loại là stateless và stateful. Bạn cần phải áp dụng nó vào trong demo lớn sắp tới, cụ thể với EJB làm việc trong giao diện Login. 
Session Bean sẽ giúp đỡ bạn trong việc lưu trữ trạng thái của Client cũng như Server.











Wednesday, August 27, 2014

Introduction to Java EE & EJB

Trong bộ môn Developing Enterprise Applications with EJB (DEAE) (Phát triển ứng dụng doanh nghiệp), điều quan trọng đó là phải hiểu và sử dụng khi có JavaEE phiên bản 5 và EJB (Enterprise JavaBeans)


1. Java Beans.

   a. Giới thiệu:

Java Bean là một nơi đóng gói và lưu trữ lại các hành động trong Java, hãy coi nó như một class Java nhưng có thể giúp bạn rút ngắn và tiết kiệm dòng code.


Cấu trúc Java Bean


    b. Thành phần:

      * Thuộc tính của Java Bean:

        * Đóng gói và lưu trữ lại các dữ liệu và chức năng.
        * Cung cấp các dịch vụ liên quan dựa trên các đặc điểm kĩ thuật.
        * Giấu việc thực hiện trong ứng dụng, đóng gói dữ liệu và thiết kế lại giao diện để tái sử dụng.

      * Cấu trúc của Java Bean:

        * Nó nằm trong một Package, được xác định với java.bean.
        * Bean-class có thể sở hữu một constructor không có đối số.
        * Có hai phương thức trong đó: Set và Get. Getter được sử dụng để lấy các thuộc tính trong một Bean-class. Setter được sử dụng để có được những đặc tính của Bean-class.

Mình đã từng hướng dẫn làm một demo về Java Beans ở kì trước trong bài viết: Standard Actions và Java Beans




  2. Enterprise JavaBeans (EJB):

     a. Giới thiệu:

          Là hình thức mở rộng hơn so với JavaBeans, Enterprise JavaBeans giúp các bạn làm ứng dụng lớn để hướng tới các doanh nghiệp.

          Enterprise JavaBeans thường sử dụng Java làm ngôn ngữ chính, bao gồm nghiệp vụ và không phụ thuộc vào nền tảng. Hơn nữa nó có thể dễ dàng tái sử dụng và hỗ trợ cho phần lớn người dùng.

Minh họa cho sơ đồ hoạt động của EJB


     b. Ưu điểm:

       * Ưu điểm chính để bạn ưu tiên sử dụng EJB:
 
              - Đơn giản.
              - Tái sử dụng.
              - Khả năng mở rộng.
              - Có thể giao dịch (tương tác).


       * Đồng nghĩa với đó là nhược điểm:

                EJB không nên sử dụng nhiều nơi bạn cần vì nó khá nặng, thích hợp làm các ứng dụng lớn và không nên áp dụng nó vào ứng dụng nhỏ.


      c. EJB Container:

                Mô hình EJB giữa Client và Server, Container là nơi chứa EJB và vòng đời của nó. Chúng ta không thể gọi trực tiếp được ngay EJB mà phải thực hiện điều này qua Container

Sơ đồ minh họa cho EJB Container

 
* Ưu điểm: 

         - Quản lí vòng đời cho ứng dụng.
         - Quản lí trạng thái cho EJB.
         - Bảo mật cao.