1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Java - Chương 3 docx

28 161 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 1,41 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nguyễn Trọng Dũng Trường ĐHSP Hà Nội Chương 3 Phát triển Web Service với các công nghệ chuẩn của java Bài viết gồm 6 phần: I.. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội • Là ngôn ngữ đánh

Trang 1

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

Chương 3 Phát triển Web Service với các công nghệ chuẩn của java

Bài viết gồm 6 phần:

I Giới thiệu

II Tổng quan các công nghệ

III Các công nghệ nền tảng của Web Service

IV Các công nghệ của Java hỗ trợ Web Service

V Các công cụ để sử dụng các công nghệ của Java cho web

Trang 2

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

Figure 1 Các công nghệ và công cụ WS

Figure 2 Kiến trúc hướng dịch vụ

III Các công nghệ nền tảng của Web Service

1 XML (eXtensible Markup Language)

• Đã trở thành chuẩn cho việc mô tả dữ liệu được trao đổi trên nền web

Trang 3

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

• Là ngôn ngữ đánh dấu, sử dụng các thẻ (tag) để đánh dấu nội dung của văn bản và định nghĩa cấu trúc của thông tin

<element name="FirstName" type="xs:string"/>

<element name="LastName" type="xs:string"/>

<element name="Address" type="USAddress"/>

• Tài liệu XML phải tuân theo một cấu trúc chuẩn (Well-formed)

• Tài liệu XML thường được kết hợp với lược đồ XML (XML Schema) để quy định cú pháp và cấu trúc các thẻ được sử dụng trong tài liệu XML

• Do có các tính chất trên nên tài liệu XML có thể dễ dàng được xử lý bởi các ứng dụng và XML là ngôn ngữ dữ liệu cho Web Service

2 SOAP (Simple Object Access Protocol)

Trang 4

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

Figure 3 Một SOAP Message

• Là giao thức cấp cao dựa vào XML để trao đổi thông tin trong các hệ thống phân tán

• SOAP cung cấp một định dạng chung cho các dữ liệu được trao đổi giữa client và server

• Đơn vị trao đổi thông tin cơ bản của SOAP là 1 SOAP message

• SOAP Message chính là một SOAP Envelope trong đó chứa SOAP Body và có thể chứa SOAP Header

• SOAP Envelope xác định XML Namespace và loại encoding được sử dụng trong SOAP message

• SOAP header được sử dụng để cho các ứng dụng quyết định việc xử lý SOAP message như thế nào

Trang 5

3 WSDL (Web Service Definition Language)

• Client và server giao tiếp với nhau thông qua việc gửi các SOAP message WSDL định nghĩa ra nội dung và câu trúc của SOAP message đó

• WSDL là tài liệu XML đùng để mô tả interface của Web service

• Tài liệu WSDL định nghĩa một lược đồ XML cho việc mô tả web service

Trang 6

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

<part element="tns:getUserBean" name="parameters"/>

<binding type="tns:Hello" name="HelloPortBinding">

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

Trang 7

IV Các công nghệ của Java hỗ trợ Web Service

1 JAXP (Java API for XML Processing)

• Là một tập hợp các API cho việc xử lý tài liệu XML

• Bao gồm các tập API con để xử lý tài liệu XML như DOM, SAX

2 JAX-RPC (Java API for XML – Remote Produce Call)

• Tập hợp các API để cung cấp các service bằng XML-RPC

• Cho phép Java gọi các phương thức của Web Service thông qua các hệ thống phân tán

• Không giới hạn việc sử dụng nền Java cho cả client và server Client sử dụng JAX-RPC

có thể gọi Web Service trên các nền tảng khác nhau Client không dùng Java cũng có thể gọi các Web Service sử dụng công nghệ Java với Jax-RPC

• Được thiết kế để đơn giản việc sử dụng SOAP Lập trình viên không cần phải làm công việc xử lý trực tiếp với SOAP mà chỉ cần sử dụng ngôn ngữ Java và các tập API của Java

Trang 8

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

• Từ phiên bản WSDP 2.0 JAX-RPC được đặt tên lại thành JAX-WS

3 JAXB (Java API for XML Data Binding)

• Cung cấp các phương thức để mapping tài liệu XML thành 1 tập hợp các đối tượng Java

và các Interface dựa trên lược đồ XML

• Làm việc trực tiếp với XML thay vì phải xử lý nội dung XML

• Công việc được thực hiện với 2 bước chính đó là:

o Sử dụng bộ binding compiler được cung cấp với JAXB để binding lược đồ XML thành các đối class Java và các interface

o Sử dụng các phương thức gắn kết dữ liệu XML với các class và interface được tạo ra

4 SAAJ (SOAP with Attachment API for Java)

• Một tập hợp API tuân theo đặc tả SOAP with Attachment

• Dùng để tạo ra SOAP message có hoặc không có đình kèm dữ liệu nhị phân

5 XWS (XML and Web Service Sercurity)

• Cung cấp bảo mật cấp SOAP message cho các ứng dụng sử dụng JAX-RPC

• Thông tin bảo mật được chứa trong SOAP header

• Mục đích dùng để chống các sự truy cập trái phép khi message được gửi trên đường truyền

V Các công cụ để sử dụng các công nghệ của Java cho web service

1 APT

• Apt là công cụ cung cấp phương tiện cho việc xử lý các annotation được thêm vào trong Java bởi JSR 175 JSR 175 cho phép lập trình viên khai báo những loại bổ nghĩa cấu trúc mới để kết hợp với thành phần trường, phương thức, class

• Ant task cho apt được cung cấp bởi JAX-WS

• Vd:

<apt

verbose="true|false"

Trang 9

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

classpath="classpath"

destdir="directory for generated class files"

sourcedestdir="directory for generated source files"

Trang 10

encoding="specify character encoding used by source files"

target="generate class files for specific virtual machine version">

<option key="keyname" value="keyvalue"/>

<source > </source>

<classpath > </classpath>

</apt>

• Bảng các tuỳ chọn của công cụ apt

verbose: In ra thông báo

classpath: Đường dẫn đến các class và thư viện

destdir: Xác định nơi chứa các class được biên dịch

sourcedestdir: Xác định nơi chứa các file source java được tạo ra

nocompile: Không biên dịch các file source java

print: In ra máy in

debug: Tạo ra các thông tin debug

debuglevel: Cấp độ debug: lines, vars, sources

nowarn: Không tạo ra các cảnh báo

sourcepath: Xác định đường dẫn đến các file source java

Trang 11

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

encoding: Xác định encoding được sử dụng cho các file source java

target: Tạo ra các file class ứng với một phiên bản nhất định

option: Các tuỳ chọn đối với bộ xử lý annotation

• WSImport Ant task được cung cấp bởi JAX-WS

• Bảng các tuỳ chọn của wsimport

wsdl WSDL file

destdir:Xác định đường dẫn chứa các file class được tạo ra

sourcedestdir:Xác định đường dẫn chứa các file source java được tạo ra

verbose: Hiện thông báo

binding: Xác định find dùng để binding dữ liệu

package: Xác định package

• Vd:

<target name="import-webservice">

<echo message="Import web service " />

<wsimport destdir="src" sourcedestdir="src"

wsdl="http://localhost:8080/hello/hello?wsdl">

</wsimport>

</target>

Trang 12

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

Mình đã gửi file đính kèm ví dụ của bài viết ở trong bài đầu tiên

1 Server

Figure 4 Cấu trúc cây thư mục

• Các bước cơ bản để tạo một ứng dụng web service phía server

o Viết các file java

Trang 13

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

o Sử dụng công cụ apt để tạo ra các file class cho web service

o Đóng gói các class và resourse thành ứng dụng web (file war)

o Triển khai ứng dụng

• Yêu cầu phải có cài j2sdk 1.5.06 và có tất cả các thư viện trong bộ WSDP 2.0 Biên dịch các file java ở chế độ tương thích với phiên bản java 1.5

1.1 Viết các file Java

• Viết các java bean được dùng để lưu trữ dữ liệu được truyền giữa client và server

Document.java

package helloservice.endpoint;

import java.util.Date;

public class Document {

private String name;

private Date createdDate;

public Date getCreatedDate() {

Trang 14

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

public void setName(String name) {

public class UserBean {

private String username;

private String password;

private Document document;

public Document getDocument() {

Trang 15

public class Hello {

private String message = new String("Hello, ");

public void Hello() {

}

@WebMethod()

public String sayHello(String name) {

Trang 16

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

return message + name;

}

@WebMethod()

public UserBean getUserBean(String username) throws Exception{

if(username.equals("cuonglm")) throw new Exception("User not found");

UserBean userBean=new UserBean();

Document doc=new Document();

• Trong thấy trong file java thi hành web service có sử dụng các annotation

o @WebService được sử dụng để đánh dấu một lớp Java là thi hành web service hoặc là đánh dấu một interface định nghĩa web service interface

o @WebMethod làm cho một phương thức trở thành một phương thức web service

1.2 Sử dụng công công cụ apt để biên dịch

• Chúng ta phải đảm bảo các thư viện của WSDP đều có trong class path

• Tạo file build.xml Định nghĩa apt ant task:

Trang 17

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

<taskdef classpathref="project.classpath" name="apt"

Trang 18

• Viết file cấu hình web cho ứng dụng web: web.xml

Trang 19

service trong file sun.jaxws.xml

• Tạo thêm một target create-war trong file build.xml để đóng gói ứng dụng thành ứng dụng web

<target name="create-war" description="Packages the WAR file" depends="build">

<echo message="Creating the WAR " />

<delete file="hello.war" />

<war warfile="hello.war" webxml="webconfig/web.xml">

<webinf dir="webconfig" includes="*.xml" excludes="web.xml" />

<zipfileset dir="webconfig" includes="*.wsdl, *.xsd" prefix="/WEB-INF/wsdl" />

Trang 20

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

• Build từ dòng lệnh với câu lệnh ant create-war hoặc build từ trong Eclipse

• Chúng ta sẽ nhận được một file là hello.war

-

-

http://javasimple.wordpress.com

2 Client

Trang 21

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

Figure 5 Cấu trúc cây thư mục

• Định nghĩa wsimport ant task trong file build.xml

<taskdef classpathref="project.classpath" name="wsimport"

classname="com.sun.tools.ws.ant.WsImport">

</taskdef>

Tạo một target import-webservice:

<target name="import-webservice">

<echo message="Import web service " />

<wsimport destdir="src" sourcedestdir="src"

Trang 22

public class Run {

static HelloService helloService=new HelloService();

public static void main(String[] args) {

Run run=new Run();

Trang 23

I Những thiết lập cần thiết cho dịch vụ web viết bằng Java

1 Danh sách các tập tin cần tải xuống

a) Apache Tomcat (phiên bản 5.0.30)

2 Cài đặt Apache Tomcat

Chúng ta có thể tải tomcat có tên jakarta-tomcat-5.0.30.zip tại địa chỉ

http://www.apache.org Rồi bạn có thể cài đặt hoặc giải nén nó Tôi giả sử bạn đã cài đặt hoặc giải nén Apache tomcat ở trong thư mục G:\WebService\tomcat và thư mục và thư mục JDK là G:\WebService\j2sdk1.4.2_11

Trang 24

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

3 Cấu hình biến môi trường

Bây giờ tất cả thư viện của Apache tomcat được cài đặt trên máy của bạn, bạn cần phải chỉ cho Java biết vị trí của chúng Điều này có thể thực hiện bằng cách thiết thông qua biến môi trường CLASSPATH

4 Điều kiện cần thiết để sử dụng Apache Axis

Tôi giả sử rằng bạn cài đặt Apache Axis vào thư mục G:\WebService\axis Sau đó, bạn phải thiết lập biến môi trường đến các thư viện Apache Axis

Trang 25

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

II Tích hợp Java và NET sử dịch vụ web

1 Viết dịch vụ web bằng Axis và NET

Trong phần này, chúng ta sẽ tích hợp dịch vụ web viết bằng ngôn ngữ java sử dụng thư viện Apache Axis với dịch vụ web viết bằng ngôn ngữ.NET

Chúng ta sẽ viết 2 dịch vụ web bằng cách sử dụng thư viện Apache Axis và NET Sau đó chúng ta sẽ viết 2 chương trình bằng ngôn ngữ Java và NET để sử dụng các dịch vụ web này Dưới đây là mô hình minh họa ví dụ

Đầu tiên chúng ta sẽ viêt dịch vụ web bằng ngôn ngữ NET

public string getCSharpMessage() {

return "This is message from MS NET";

}

}

}

Trang 26

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

Tiếp theo là dịch vụ web bằng ngôn ngữ Java sử dụng thư viện Apache Axis

public class Axis {

public String getAxisMessage() throws Exception {

return "This is message from Apache Axis";

http://localhost:8080/axis/Axis.jws?wsdl để tham chiếu đến dịch vụ web Apache Axis

Và đây là mã nguồn của ứng dụng.NET sử dụng các dịch vụ web kể trên

//Call NET Web Service

NetRef.NetService net = new NetRef.NetService();

Trang 27

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

CSharp cs = new CSharp();

}

}

}

Với NetRef, AxisRef là các tên tham chiếu đến dịch vụ web tương ứng với các dịch vụ

web viết bằng.NET và Apache Axis

Tiếp đến chúng ta sẽ viết ứng dụng Java sử dụng các dịch vụ web trên Để gọi các dịch vụ này, chúng ta phải tạo các proxy đến các dịch vụ web này.Lệnh dưới đây dùng để tạo một proxy của java đến dịch vụ web của NET

java org.apache.axis.wsdl.WSDL2Java

http://localhost/CSharpService/NetService.asmx?wsdl

Tiếp đến, chúng ta sẽ tạo proxy đến dịch vụ web viết bằng Apache Axis,tương tự như dịch

vụ web của NET chúng ta chỉ cần thay thế URL của dịch vụ web viết bằng NET bằng dịch vụ viết bằng Apache Axis như sau:

java org.apache.axis.wsdl.WSDL2Java -p axis http://localhost:8080/axis/Axis.jws?wsdl Sau khi chúng ta tạo các proxy java đến các dịch vụ web này chúng ta sẽ có các thư mục chứa các lớp proxy đến các dịch vụ này có tên tương ứng là net và axis

Bây giờ chúng ta có thể viết chương trình bằng ngôn ngữ Java sử dụng các dịch vụ web trên

import axis *;

import net.*;

public class GetAllType {

public static void main(String [] args) throws Exception {

//Call MS NET

NetServiceLocator netLocator = new NetServiceLocator();

NetServiceSoap net = netLocator.getNetServiceSoap();

System.out.println(net.getCSharpMessage());

//Call Apache Axis

AxisServiceLocator axisLocator = new AxisServiceLocator();

Trang 28

Giáo trình Java

Ths Nguyễn Trọng Dũng Trường ĐHSP Hà Nội

localhost.axis.Axis_jws.Axis axis = axisLocator.getAxis();

Ngày đăng: 08/08/2014, 16:22

w