Thứ Ba, 28 tháng 10, 2014

Config địa chỉ ip

Em thao tác theo như anh hướng dẫn ở dưới nhé:

Ở chỗ biểu tượng mạng khi em click phải chuột vào nó sẽ có hai tùy chọn, em chọn cái "Open Network and Sharing Center" sẽ được giao diện như sau:

Sau khi em bấm vào chỗ mà anh tô thì nó sẽ hiện ra như sau:

 Tiếp theo click phải chuột vào và chọn properties .
 Tiếp theo ở chỗ cái ô The connection uses the following items: em lăn chuột xuống để nhìn thấy còn dòng mà anh bôi màu vàng nhé:

Như hiện ra ở đây, em làm đúng như anh, cái số 98 em có thể thay bằng bất kì số nào đấy trong dãy số từ 0- 255. Ok vậy là xong rồi bé nhé.

Nhấn Ok để kết thúc và lưu lại. Nếu không được thì anh đi chết đây :V

Thứ Bảy, 6 tháng 9, 2014

SESSION BEAN

Đầu tiên ta tạo một project với tên Calculator và sử dụng Java ServerFaces.

Tiếp đó ta tạo ra một lớp Session Bean và viết vào phương thức như dưới đây:


package daea.session.bean;

import javax.ejb.Stateless;


@Stateless
public class Calculator {

    public int sum(int a, int b){
        return a + b;
    }
}

Tiếp theo ta tạo một lớp Managed Bean và viết code như dưới đây:


package daea.manage.bean;

import daea.session.bean.Calculator;
import javax.ejb.EJB;
import javax.inject.Named;
import javax.faces.view.ViewScoped;

@Named(value = "home")
@ViewScoped
public class Home {
    @EJB
    private Calculator calculator;

    private int a;
    private int b;
    
    private int sum;
    
    public void sum(){
         sum = calculator.sum(a, b);
    }

    public int getA() {
        return a;
    }

    public int getB() {
        return b;
    }

    public int getSum() {
        return sum;
    }
    
}
Ở trang index.xhtml ta tạo ra một form như dưới trong thẻ body


<h:form>
            <h:inputText value="#{home.a}"/>
            <h:inputText value="#{home.b}"/>
            <h:commandButton value="=" actionListener="#{home.sum()}" />
            <h:outputText value="#{home.sum}"/>
        </h:form>

Và đây là source code của demo.



Thứ Tư, 3 tháng 9, 2014

Introduction to Java EE and EJB (Enterprise JavaBeans)

I. Giới thiệu về EJB
- EJB (Enterprise JavaBeans) là một thành phần bên phía server, nó được sử dụng cho việc phát triển các ứng dụng với quy mô lớn (Một hệ thống với nhiều chức năng, lượng truy cập nhiều).

- Nó đóng gói, chứa đựng các nghiệp vụ logic của ứng dụng.

- Nó là một nền tảng được sử dụng cho việc phát triển các ứng dụng có thể chạy trên nhiều nền tảng (như LINUX, WINDOWS), có tính tái sử dụng các thành phần của ứng dụng (Viết một lần và sẽ được dùng lại), ngoài ra nó là nền tảng mà phục vụ cho các ứng dụng có quy mô lớn sử dụng ngôn ngữ JAVA.

1. EJB là một thành phần.
- Thứ nhất thì ta nên hiểu khái niệm Component là gì: Component chính là một đoạn code mà nó sẽ đưa ra các hành vi của các khái niệm trong thế giới thực.

- Nó có thể được sử dụng trong các ứng dụng khác nhau (Vì tính không phụ thuộc vào nền tảng và nó là một phần có thể tách rời và tái sử dụng).

- EJB là một thành phần bên phía SERVER SIDE có thể được sử dụng để xây dựng các phần khác nhau của ứng dụng hoặc là một ứng dụng hoàn chỉnh.

- Yêu cầu chính của một thành phần là cái mà nó nên gói gọn các hành vi, tương tác của ứng dụng.

2. Why we need to use EJB 3.0

- Nó khá đơn giản, vì nó chỉ là một lớp java thông thường và ta sẽ gắn các annotation (Chú thích).
- Nó có tính tái sử dụng cao vì nó là một thành phần mà mang trong nó một số nghiệp vụ nhất định.
- Nó có khả năng phục vụ cho việc phát triển các ứng dụng lớn với lượng truy cập người dùng nhiều (có thể lên tới vài chục triệu).

3. Không nên sử dụng EJB trong các trường hợp sau.
- Những cái ứng dụng mà thuộc loại chỉ làm một lần mà không làm lại lần thứ 2 một ứng dụng tương tự như vậy, lượng người dùng ít, không cần đến quản lý các giao dịch và nhu cầu bảo mật không cao.
- Những ứng dụng mà có thể chạy trên đa nền tảng.

Sơ đồ của ứng dụng lớn được chia làm nhiều tầng:


Việc giao tiếp của SERVER.

II. Vai trò của EJB
- Với EJB việc quản lý các ứng dụng mang tính chất enterprise trở nên dễ dàng hơn.
- Nó có vai trò rất to lớn trong việc phát triển ứng dụng enterprise vì nó là một thành phần và có thể được dùng lại ở các ứng dụng khác.


III. Nhận xét chung

- Tuy rằng việc EJB có rất nhiều ưu điểm tuy nhiên khi bắt đầu mới học,  các lỗi xảy ra rất nhiều gây khó khăn.

- EJB có rất nhiều các ứng dụng mã nguồn mở, vì thế rất tiện lợi cho việc tham khảo.

- Tuy nhiên EJB chỉ phù hợp cho những ứng dụng lớn mang tính chất enterprise.

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

Cài đặt service cho glassfish 4

Cách 1:
Nếu như chúng ta đã cài đặt Netbean cho hệ thống, ta chỉ cần vào đường dẫn chưa thư mục cài đặt của glassfish 4 giống như sau:

C:\Program Files\glassfish-4.0\glassfish\bin

Ở đây ta sẽ chạy các file .bat dưới quyền adminstrator để tiến hành thực thi và quản lý glassfish server. Ví dụ để start glassfish ta chạy file "startserv.bat" dưới quyền adminstrator, và file "stopserv.bat" để tắt glassfish.

Sau khi chạy thành công, ở trình duyệt ta vào địa chỉ sau để vào trang quản lý của glassfish: localhost:port với port là cổng port của glassfish, mặc định thì sẽ là 4848, như vậy ta sẽ vào trang: localhost:4848 để có thể quản lý server glassfish.

Cách 2:
Nếu chúng ta chưa cài đặt Netbean, ta sẽ tiến hành download glassfish service từ trang chủ theo các bước dưới đây:
Đầu tiên ta mở trang này và làm theo các bước hướng dẫn. (Tải về =>  giải nén)

https://glassfish.java.net/download.html

Ta vào thư mục bin trong thư mục vừa giải nén ra được, sau đó copy đường dẫn.\

Tiếp theo ta sẽ thiết lập biến môi trường để cho việc thực thi glassfish dễ dàng hơn, ta sẽ chạy glassfish bằng lệnh của sổ run của windows.

- Đầu tiên ta chạy cmd bằng quyền adminstrator sau đó tìm đến đường dẫn của glassfish, tiếp theo ta gõ dòng lệnh "asadmin create service"

Như vậy ta đã có thể thao tác với glassfish bằng cách gõ lệnh trong chương trình run.


Thứ Bảy, 23 tháng 8, 2014

Module 5

Đầu tiên ta sẽ tạo một website với tên JAX-WSDemo sau đó tạo một class webservice mới như dưới đây:


Tiếp đó ta tạo ra một phương thức với tên validate và sau đó viết vào đoạn mã dưới đây:

@WebMethod(operationName = "validate")
    public boolean validate(@WebParam(name = "cardnumber") String cardnumber) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < cardnumber.length(); i++) {
            if ((i%2) == 1) {
                System.out.println("i" + cardnumber.charAt(i));
                int t = Integer.parseInt(cardnumber.charAt(i) + "");
                String tmp = (t*2)+"";
                sb.append(tmp);
            }else{
                sb.append(cardnumber.charAt(i));
            }
        }
        int sum = 0;
        String sb2 = sb.toString();
        for (int i = 0; i < sb2.length(); i++) {
            sum += Integer.parseInt(sb2.charAt(i) + "");
        }
        if ((sum%10) != 0) {
            return true;
        }else{
            return false;
        }
    }


Tiếp theo ta sẽ chạy ứng dụng, rồi sau đó nhấn phải chuột vào webservice vừa được tạo và chọn Test Service ta sẽ được đường link WSDL như sau:


Tiếp đó ta tạo một ứng dụng client cho để test web Service chúng ta vừa tạo ra. Ta sẽ tạo ra một webservice client như dưới đây:



Sau đó ta copy đường dẫn mà khi test service ta nhận được vào như hình dưới:


Sau đó ta kéo phương thức của class webservice client vừa tạo ra vào class của hàm main và gọi nó trong hàm main như sau:

public static void main(String[] args) {
        System.out.println(validate("12345678910"));
    }

    private static boolean validate(java.lang.String cardnumber) {
        ms.services.Validator_Service service = new ms.services.Validator_Service();
        ms.services.Validator port = service.getValidatorPort();
        return port.validate(cardnumber);
    }

Nhận xét:

Webservice thường được dùng cho các ứng dụng enterprise vì tính không phụ thuộc vào ngôn ngữ cũng như nền tảng của nó.

- Nó có thể dễ dàng nâng cấp, bảo trì hệ thống mà ít làm ảnh hưởng đến client.

- Tuy nhiên việc sử dụng webservice khá chậm vì phải qua kết nối internet


Overview of Rest Architecture and Restfull WebService

I. REST
a. Định nghĩa.

-Rest là một tập những hướng dẫn và nguyên lý được áp dụng cho môi trường mạng và nó không phải là giao thức cũng không phải là chuẩn mà nó chỉ là phong cách kiến trúc trên mạng hệ thống được thiết kế có giao thức,thành phần dữ liệu,hyperlinks,và clients như là một phần của hệ thống.


- WWW là một ví dụ của kiến trúc REST





b. Đặc điểm của Rest

- Rest là kiến trúc có môt hình Client - Server: Client gửi request lên server , Sau khi server tiến hành xử lý xong sẽ trả kết quả về cho client.

- Cấu trúc phi trạng thái (Stateless): Client gửi toàn bộ thông tin lên server để server có thể nhận biết client là ai để trả về toàn bộ thông tin cần thiết. Sau khi xử lý xong, server sẽ không lưu bất cứ một thông tin gì về client ngay sau khi phản hồi lại cho client.
- Cache :Client có thể giữ lại thông tin mà server trả về,giúp cho ứng dụng nhẹ và chạy mượt hơn.

- Code on demand: Server sẽ chuyển các mã lệnh về phía client.


-Kiến trúc Rest là một kiến trúc có phân tầng.


II. Restful

a. Định nghĩa

- Kiến trúc restful có mô hình dựa trên kiến trúc Rest và HTTP, nó không phụ thuộc vào nền tảng ngôn ngữ


 -Client gửi thông tin lên server thông qua HTTP request và server trả kết quả về dựa trên HTTP response.





III. Bộ thư viện JAX-RS

JAX-RS là bộ thư viện chính trong JAEE, nó dựa trên annotation.

Nhận xét

- Nhờ có REST với cơ chế chờ (Khi client request lên server mà server đang bận thì nó sẽ chờ cho đến khi mà server xử lý xong)vì thế server được giảm tải công việc , ứng dụng sẽ nhanh hơn.

- Mọi tài nguyên được quy về 1 dạng duy nhất nên dễ quản lý và đảm bảo an toàn


- Dựa vào cách hoạt động chờ xử lý nên server sẽ được giảm tải đi rất nhiều, tránh tình trạng quá tải.


- SOAP là chuẩn nhưng càng ngày, những ứng dụng lớn đều chuyển sang dùng REST