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


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

Java API for Webservice

I. Các thư viện thực thi Web Application.

J2EE cung cấp 4 thư viện để thực thi ứng dụng Web Service đó là:
- Java API for XML-based RPC(JAX-RPC)
- Gửi tệp tin đính kèm với SOAP.
- Java API cho các đăng kí XML.
- Java API cho việc xử lý các file XML.

II. Chi tiết

1. XML Web Services

- XML Web Services làm việc cùng với các giao thức web chuẩn như HTTP, XML, SOAP và TCP/IP.

- Các đặc tính:
+ Kiến trúc phi trạng thái.
+ Kiến trúc không đồng bộ.
+ Giao tiếp, làm việc không phụ thuộc vào ngôn ngữ và nền tảng.


2. Xử lý các tài liệu XML sử dụng JAXP.


JAXP hoặc Java API dành cho việc xử lý XML cung cấp khả năng validation và phân tích tài liệu XML xử dụng ứng dụng viết trong ngôn ngữ lập trình Java. Nó cung cấp một khung làm việc cho việc sử dụng các API đơn giản cho XML là chuẩn SAX2 và DOM2, các API chuẩn mà đọc, viêt, chỉnh sửa tài liệu XML.

a. SAX Parser

- SAX xử lý các tài liệu XML, nơi các cái thành phần dữ liệu được diển tả trên một cơ sở liên tục và tuần tự, sau đó được chuyển đổi thành chuỗi các sự kiện. SAX không tải bất kì tài liệu XML nào vào bộ nhớ vì thế nó có thể quét một file lớn với một tốc độ khá nhanh.

- Các interfaces, classes được sử dụng để phân tích tài liệu XML mà sử dụng trong SAX là:

+ DefaultHandler.
+ SAX Parser Factory.
+ SAX ParserXMLReader.




b. DOM

Trình phân tích của DOM được định nghĩa chủ yếu trong hai packages là:

+ org.w3c.dom

+ Javax.xml.parsers.



c. JAX-RPC


- JAX-RPC làm giảm xuống độ phức tạp cho các nhà phát triển bằng nhiều cách.

- Dưới đây là một số lợi ích của nó:

+ Việc tạo ra yêu cầu và phản hồi SOAP được chuẩn hoá.

+ Chúng ta không cần trực tiếp làm việc với SOAP mà chỉ cần làm việc với các đối tượng trong Java thuần tuý.

+ Phần việc của nhà phát triển được giảm xuống bởi việc cung cấp việc tạo ra và xử lý SOAP được gói gọn trong một thư viện hay một công cụ.

+ Các tình huống mapping khác nhau như từ XML sang Java và từ Java sang XML, WSDL đến Java, Java đến WSDL và ngoài ra WSDL/XML và Java được hỗ trợ bởi JAX-RPC.

d. Các chức năng của việc điều hành JAX-RPC Service

- JAX-RPC cung cấp 3 chức năng điều hành đó là:

+ Chức năng yêu cầu và phản hồi đồng bộ. Khi một khác hàng gọi đến một phương thức Remote từ một thread, cái mà đã đóng, kể từ khi một giá trị trả về hoặc ngoại lệ được trả về.

+ Chức năng RPC một chiều. Khi một máy client gọi đến một phương thức ở phía server và tiếp tục trong luồng của nó mà không khoá. Không giá trị trả về hay ngoại lệ được ném ra trong lần gọi này.

+ Non-blocking invocation mode. Một client gọi đến một procedure remote và tiếp tục với cái luồng đấy mà không khoá, sau đó client xử lý remote method trả về cái request hoặc thông qua periodically requesting cho việc trả về giá trị.

e. JAXP API

- Một registry là một tài nguyên được chia sẻ cái mà được miêu tả trong hình thức của một Web-based Service, cái mà làm các interactions động dễ hơn trong việc sử dụng.

- Java API cho XML Registries (JAXR) API cung cấp một tập hợp các API đơn giản để truy cập vào sự đa dạng của XML Registries, như UDDI và ebXML Registry, Hence, JAXR API ngoài ra còn được gọi như một cái API java trừu tượng không giống nhau.


- ebXML là một business-to-business XML Framework. cái mà enable business để được dẫn tới bằng điện tử qua internet. ebXML registry là cả hai cái sau: một là  registry metadata cũng như một repository mà có thể giữ nội dung arbitrary.

- Các tính năng sau đây là của ebXML informaition model:

+ Hỗ trợ tính năng validation dữ liệu cải thiện integrity of registry data.

+ Hỗ trợ việc packaging (or grouping)( hỗ trợ việc nhóm lại) của các đối tượng registry lên quan.

+ Nó hỗ trợ cả hai việc giao tiếp là synchroncus và asyncronous.

+ Nó cung cấp sự xác nhận dựa trên số, chữ kí, việc validation và việc cấp phép.

f. JAXP Architecture.

JAXR cung cấp một API cho việc truy cập các đăng kí business. Nó có một cấu trúc linh hoạt mà hỗ trợ UDDI và các chỉ định đăng kí khác, như ebXML.

- JAXR provider bao gồm 2 phần:

+ Registry-specific JAXP provider.
+ JAXP pluggable provider.

3. SAAJ là gì?

SOAP cùng với API kèm theo cho Java là một API mà cho phép người dùng tạo và gửi SOAP messages cùng với file kèm theo bởi các gói trong javax.xml.soap

SOAP đơn giản cung cấp các định dạng message cho WS. It cho phép nguwoif phát triển làm ra và xử lý các tin nhắn.




Nhận xét:

Java Web Service cung cấp rất nhiều các api mạnh mẽ để phục vụ cho việc thao tác với SOAP (file xml) trở nên dễ dàng hơn, (việc thao tác với các gói soap cực kì phức tạp).
- Việc dùng các api giúp cho nhà phát triển không mất nhiều công sức để phát triển các services.