2011-10-19 5 views
12

Cách tôi hiểu nó là Java EE 6 bao gồm các lớp cho java.ws.rs (JAX-RS) được định nghĩa trong tài liệu đặc tả JSR 311. Nhưng tôi không biết tại sao bạn sẽ sử dụng Jersey hoặc Apache CXF nếu các lớp cơ sở đã được tích hợp vào Java EE 6. Bạn không thể tạo một dịch vụ web RESTful với các lớp đó một mình? Jersey, Apache CXF, v.v. chỉ là các khuôn khổ để phát triển các dịch vụ web dựa trên REST dễ dàng hơn?Jersey có phải là một khuôn khổ để phát triển các dịch vụ web RESTful trong Java không?

Trả lời

17

lý do bạn sử dụng Jersey hoặc Apache CXF nếu các lớp cơ sở đã được tích hợp vào Java EE 6. Bạn không thể tạo dịch vụ web RESTful chỉ với các lớp đó?

Java EE chỉ xác định tiêu chuẩn, các lớp đó là API chuẩn, nhưng không có triển khai nào phía sau chúng. Jersey và CXF đang cạnh tranh triển khai tiêu chuẩn.

Tuy nhiên, nếu bạn có một máy chủ yêu cầu hỗ trợ Java EE 6, nó sẽ phải chứa một triển khai cho mọi API trong tiêu chuẩn. Ví dụ, Glassfish bao gồm Jersey, vì vậy bạn không phải thêm nó một cách rõ ràng.

+2

+1 cho đoạn thứ 2. Đó gần như chắc chắn là nguồn gốc của sự nhầm lẫn của OP. –

+0

Có bất kỳ máy chủ ứng dụng nào yêu cầu hỗ trợ toàn bộ thông số * EE6 * không? Glassfish, tôi cho là vậy. JBoss 7 chỉ được chứng nhận cho cấu hình web, và có một số bit chính bị thiếu từ phần còn lại (các EJB từ xa, chẳng hạn!). Hoặc là phần JAX-RS của cấu hình web? –

+0

Phần "không thực hiện đằng sau chúng" là nơi tôi đang bối rối. Thực hiện những gì? Có lẽ đó là một vấn đề thuật ngữ tôi đang gặp phải. Tôi khởi tạo các lớp và thực hiện các giao diện. Gói javax.ws.rs đó chứa các lớp cũng như các giao diện mà tôi có thể khởi tạo và triển khai trong ứng dụng của tôi mà không có Jersey hoặc CXF. Jersey làm gì khác hơn thế? – AndyB

8

JAX-RS chỉ là thông số . Để sử dụng JAX-RS, bạn cần thực hiện thông số kỹ thuật.

Jersey là triển khai JAX-RS . Cụ thể, nó là việc thực hiện tham chiếu.