Giáo trình Java - 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ôngnghệ của Java cho web

VI. Mô hình lập trình

pdf28 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 6179 | Lượt tải: 3download
Tóm tắt nội dung Giáo trình Java - Chương 3: Phát triển Web Service với các công nghệ chuẩn của Java, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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: 
Giáo trình Java 
Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội 
<taskdef classpathref="project.classpath" name="apt" 
classname="com.sun.tools.ws.ant.Apt"> 
• Sau đó tạo một target build: 
• Chúng ta sử dụng câu lệnh ant build để chạy file build.xml từ dòng lệnh hoặc có thể sử 
dụng Eclipse để chạy file build.xml. 
• Sau khi build xong chúng ta sẽ thấy apt tạo thêm một số file java cho web service. 
1.3. Đóng gói thành ứng dụng web 
Viết file cấu hình định nghĩa web service sun-jaxws.xml với nội dung sau 
<endpoint 
name='HelloService' 
Giáo trình Java 
Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội 
implementation='helloservice.endpoint.Hello' 
url-pattern='/hello'/> 
• Thẻ endpoint dùng để định nghĩa một web service end point. Thuộc tính name xác định 
tên của web service. Thuộc tính implementation xác định lớp thực thi web service. url-
pattern là đường dẫn tương đối của ứng dụng với ứng dụng web chúng ta triển khai web 
service ( 
• Viết file cấu hình web cho ứng dụng web: web.xml 
<web-app 
xmlns="" 
version="2.5" 
xmlns:xsi="" 
xsi:schemaLocation=" 
"> 
HelloService 
<listener-
class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
HelloService 
HelloService 
com.sun.xml.ws.transport.http.servlet.WSServlet 
HelloService 
/hello 
Giáo trình Java 
Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội 
30 
• Tương ứng với mỗi web service được định nghĩa trong file sun-jaxws.xml chúng ta sẽ 
định nghĩa một servlet trong file web.xml. Display name và servlet name có cùng tên với 
web service, servlet class là mặc định. url-pattern tương ứng với url-pattern của web 
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. 
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. 
1.4. Triển khai ứng dụng 
• Copy file war vào web server tomcat 5.5 hoặc JBoss 4.03 sau đó gõ vào trình duyệt dòng 
sau để kiểm tra:  
---------------------------------------- 
------------- 
Một số đường dẫn đến các file thư viện trong bài ví dụ mình viết để đường dẫn tuyệt đối. 
Các bạn khi download về thì phải sửa cho đúng với đường dẫn trên máy của bạn mới chạy 
được. 
---------------------------------------- 
------------- 
2. Client 
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"> 
Tạo một target import-webservice: 
<wsimport destdir="src" sourcedestdir="src" 
wsdl=""> 
• Sau khi chạy target import-webservice chúng ta sẽ nhận được các file java tương ứng để 
làm việc với web service ở phía server. 
• Viết một lớp Run để kiểm tra 
Giáo trình Java 
Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội 
Run.java 
package helloservice.endpoint; 
import javax.xml.ws.WebServiceRef; 
public class Run { 
static HelloService helloService=new HelloService(); 
public static void main(String[] args) { 
Run run=new Run(); 
run.doTest(); 
} 
public void doTest() { 
System.out.println(helloService); 
Hello client=helloService.getHelloPort(); 
System.out.println(client.sayHello("Le Manh Cuong")); 
UserBean userBean; 
Document document; 
try { 
userBean=client.getUserBean("cuonglm"); 
} catch (Exception_Exception e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
try { 
Giáo trình Java 
Ths. Nguyễn Trọng Dũng Trường ĐHSP Hà Nội 
userBean=client.getUserBean("linhpk"); 
document=userBean.getDocument(); 
System.out.println(userBean.getUsername()); 
System.out.println(userBean.getPassword()); 
System.out.println(document.getName()); 
System.out.println(document.getCreatedDate()); 
} catch (Exception_Exception e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
} 
} 
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) 
b) Apache Axis (phiên bản 1.4) 
c) Xerces (version 2.6.2) 
Chú ý: Đó là phiên bản mới nhất khi viết bài này, có thể có những bản mới hơn tại các địa 
chỉ trên 
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ỉ 
 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 
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. 
set JAVA_HOME=G:\WebService\j2sdk1.4.2_11 
set CATALINA_HOME=G:\WebService\tomcat 
set CATALINA_LIB=%CATALINA_HOME%\common\lib 
set CLASSPATH=%CLASSPATH%;.;%CATALINA_LIB%\mail.jar; 
%CATALINA_LIB%\activation.jar;%CATALINA_LIB%\servlet.jar 
set PATH=%PATH%;%JAVA_HOME%\bin;%CATALINA_HOME%\bin 
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 
set AXIS_LIB=G:\WebService\axis\lib 
set CLASSPATH=%CLASSPATH%; 
%AXIS_LIB%\axis.jar; 
%AXIS_LIB%\axis-ant.jar; 
%AXIS_LIB%\commons-discovery.jar; 
%AXIS_LIB%\commons-logging.jar; 
%AXIS_LIB%\jaxrpc.jar; 
%AXIS_LIB%\log4j-1.2.8.jar; 
%AXIS_LIB%\saaj.jar; 
%AXIS_LIB%\wsdl4j.jar 
Sau khi thiết lập đầy đủ các thư viện cho Apache Axis, bạn cần tạo một đường dẫn ngữ 
cảnh ứng dụng web đến thư mục G:\WebService\axis\webapps\axis hoặc chép thư mục 
G:\WebService\axis\webapps\axis vào trong thư mục G:\WebService\tomcat\webapps. 
Sau đó bạn khởi động máy chủ web bằng lệnh: startup. 
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 
namespace CsharpService { 
[WebService(Namespace="net")] 
public class NetService : System.Web.Services.WebService { 
… 
[WebMethod] 
public string getCSharpMessage() { 
return "This is message from MS .NET"; 
} 
} 
} 
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"; 
} 
} 
Đổi tên tập tin thành Axis.jws, Chép nó vào thư mục G:\WebService\tomcat\webapps\axis 
and restart Apache Tomcat. 
2. Tiếp đến chúng ta sẽ tạo các chương trình ở phía người dùng bằng ngôn ngữ Java và 
.NET sử dụng các dịch vụ web trên 
Trước khi chúng ta viết một ứng dụng .NET dùng các dịch vụ web này thì chúng ta phải 
tạo WSDL để chương trình.NET có thể tham chiếu đến các dịch vụ web. Đối với dịch vụ 
web viết bằng Apache Axis thì chúng ta sử dụng URL: 
 để 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 
using System; 
namespace CsharpClient { 
class Csharp { 
public CSharp() { 
//Call .NET Web Service 
NetRef.NetService net = new NetRef.NetService(); 
Console.WriteLine(net.getCSharpMessage()); 
AxisRef.AxisService axis = new AxisRef.AxisService(); 
Console.WriteLine(axis.getAxisMessage()); 
Console.Read(); 
} 
static void Main(string[] args) { 
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 
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  
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(); 
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(); 
System.out.println(axis.getAxisMessage()); 
} 
} 
III. Tài liệu tham khảo 

File đính kèm:

  • pdfGiáo trình Java - Chương 3_Phát triển Web Service với các công nghệ chuẩn của Java.pdf
Tài liệu liên quan