2009-10-01 37 views

Trả lời

3

Có cần AXIS hoặc CXF cho dịch vụ web Java không?

Mặc dù Axis2 là khuôn khổ phổ biến nhất để làm việc với Dịch vụ web không phải là cách duy nhất để thực hiện chúng.

Có thể thực hiện tất cả thông qua JDK (1.6) không?

Có, nhưng khó hơn nhiều. Bạn sẽ được hưởng lợi rất nhiều từ việc sử dụng một khung được sử dụng bởi các ứng dụng khác và từ các sửa lỗi mà nhóm phát triển cung cấp. Làm tất cả bằng tay cũng giống như phát minh lại bánh xe.

Nếu bạn muốn có quyền kiểm soát toàn bộ những gì đang xảy ra bên dưới, có lẽ bạn có thể đi với: JAX-WS

hoặc nếu ứng dụng rất đơn giản, trực tiếp với ổ cắm.

Nhưng một lần nữa, Axis2 là cách kinh điển để làm WS (nhưng không phải là người duy nhất)

+1

Chỉ cần đoán, nhưng anh ấy có thể muốn chi tiết hơn một chút. –

+0

@Willliam: Đã chỉnh sửa để thêm chi tiết. Tôi nghĩ rằng không có vấn đề gì khác được thêm vào cuối câu trả lời sẽ là như nhau. Axis có cần thiết không? Không, có thể được thực hiện với JDK? Có, nhưng nó khó hơn nhiều. :) – OscarRyz

1

Bạn có thể sử dụng các dòng http cung cấp bởi các máy chủ web như bạn whish, nhưng sử dụng một khuôn khổ và một số lọ (mà là đã được chứng minh để làm việc) sẽ giúp bạn tiết kiệm rất nhiều đau đầu và rất nhiều thời gian trong thời gian dài.

0

Thông thường bạn sẽ muốn sử dụng khung lập trình cho các dịch vụ web.

Thứ gì đó như AXIS, CXF hoặc tải xuống Java EE (GlassFish) từ Mặt trời.

2

Để thay thế cho Axis, bạn có thể sử dụng khung Spring WebServices để chạy ứng dụng webservices của bạn trong một thùng chứa J2EE như Tomcat hoặc bất kỳ thứ gì tương tự. Tôi đã tìm thấy nó rất dễ sử dụng và thiết lập, và nếu bạn muốn tích hợp các dịch vụ web của bạn vào một ứng dụng web khác sau đó, nó khá dễ dàng để làm (tôi đã làm như vậy bản thân mình vào hai dịp riêng biệt).

+0

Axis1? Xấu. Axis2? Tệ hơn nữa. 1 cho các dịch vụ web mùa xuân. – duffymo

3

Sau đây là dựa trên tất cả là true và cá nhân câu chuyện:

Vì vậy, bạn muốn tiêu thụ một dịch vụ web trong ứng dụng web Java của bạn, và bạn không muốn thêm 10MiB của lọ để bạn nạc 1,3 MiB .war tập tin, và bên cạnh bạn là tuyệt vời tại phân tích cú pháp XML (bạn có thể tay mã XPath truy vấn, và XSLT tập tin), bạn hoàn toàn hiểu HTTP, và khách hàng bạn đang giao tiếp với tài liệu tuyệt vời. Bạn tải xuống giao diện WSDL tại các điểm cuối và các phương thức của bạn và bắt đầu tạo một lớp Java ánh xạ tới các tính năng bạn cần. Bạn cảm thấy tuyệt vời rồi.

Bạn bắt đầu đọc về cách gửi yêu cầu SOAP và bạn nghĩ rằng điều này có vẻ hơi dài nhưng chúng chỉ là một chuỗi, vì vậy bạn bắt đầu xây dựng một tiện ích lấy đối tượng yêu cầu Java của bạn và chuyển đổi nó cho một yêu cầu SOAP. Bạn gửi yêu cầu SOAP rõ ràng của bạn đến máy chủ nhưng nó bị từ chối (missing a signature).

Vì vậy, bây giờ bạn bắt đầu thêm các mã JAR vào dự án của mình và bạn bắt đầu xem cách tính chữ ký của một phần của tài liệu XML và bao gồm cả tài liệu và yêu cầu.Điều này sẽ đưa bạn một thời gian nhưng với đủ hacking bạn nhận được một tin nhắn mà bạn có thể gửi đến dịch vụ xà phòng của bạn và bạn đang đối phó với các SOAP response. Bây giờ bạn đang cảm thấy tuyệt vời ...

Cho đến khi quản trị viên khách hàng của bạn thay đổi yêu cầu bảo mật, phát hành khóa công khai mới và cập nhật giao diện xà phòng với một số loại tùy chỉnh và khách hàng tiếp theo của bạn đang chạy một dịch vụ tương tự (nhưng trên Windows Server) cũng muốn bạn thực hiện với chúng.

Tại thời điểm này, tôi đã từ bỏ việc cố gắng thực hiện điều này theo cách thuần túy Java và chỉ mới bắt đầu sử dụng thư viện chuẩn. Họ đối phó với những thứ như mã hóa, marshaling, độ lệch tạo thành các tiêu chuẩn và chúng cho phép bạn tập trung vào những thứ gần gũi hơn với miền vấn đề của bạn. Tôi hy vọng bạn có thể tiết kiệm cho mình những tháng bị mất nó đã cho tôi để tìm hiểu bài học này.

3

Bản cập nhật về cảnh quan của dịch vụ web trong năm 2013.

Dịch vụ web được sử dụng dựa trên SOAP và dựa trên XML. Các dịch vụ Web được chuẩn hóa thành JAX-WS. Một số trong những khuôn khổ phổ biến hơn là (là):

  • Axis 1.x
  • Axis 2
  • Apache CXF - CXF cũng bao gồm các giao thức khác. Đó là một khuôn khổ rộng hơn nhiều
  • Dịch vụ web của Metro bao gồm Triển khai tham chiếu JAX-WS.
  • Java 6 và Java 7 bao gồm RI JAX-WS theo mặc định. Điều đó có nghĩa là các khung công tác không còn cần thiết nữa, ngoại trừ việc tạo các nhánh/bộ phận dịch vụ khách hàng và dịch vụ

Có các triển khai khác không được liệt kê ở đây, cụ thể cho nhà cung cấp, ví dụ: Triển khai WS của IBM Websphere và triển khai WS của Weblogic.

Nói chung, để tạo các dịch vụ web, tôi khuyên bạn nên dùng Metro và JAX-WS RI.

Lưu ý rằng có nhiều tiêu chuẩn WS- *, ví dụ: WS-Security có thể không phải là một phần của tất cả các triển khai WS.

Vì các dịch vụ web đã tồn tại một thời gian, các lựa chọn thay thế khác đã đưa ra cả về kiểu kiến ​​trúc, giao thức và mã hóa.

Ví dụ: XML từng là mã hóa de-facto. JSON hiện phổ biến hơn. Bạn nên xem Jackson, một trình phân tích cú pháp JSON hoặc Google GSON. Các đối số chính có lợi cho JSON là dễ sử dụng, gọn nhẹ và thân thiện với nhà phát triển.

Cùng với JSON đã đến REST. REST là một kiểu kiến ​​trúc. Với REST, bạn vẫn có thể thực hiện "các dịch vụ web" theo nghĩa các dịch vụ từ xa có thể dễ dàng tiêu thụ qua mạng. REST cũng đã được chuẩn hóa trong họ tiêu chuẩn Java như JAX-RS. Một số triển khai JAX-RS phổ biến bao gồm CXF, Jersey và RESTLet.

Cuối cùng, có một số trẻ mới trên khối sử dụng mã hóa nhị phân. Đó là Bộ đệm giao thức của Google và Tiết kiệm Apache. Mục tiêu chính của họ là hiệu suất cũng như hỗ trợ rộng hơn cho các ngôn ngữ khác (Java, C#, Erland, Perl ...).

Khi phát triển dịch vụ web hôm nay, câu hỏi phải là: - tôi có quan tâm đến hiệu suất không? - tôi có muốn truy cập dịch vụ từ nhiều ngôn ngữ khác nhau không? - tôi có muốn thân thiện với thiết bị di động không?

Những điều này sẽ giúp bạn hướng dẫn lựa chọn của mình. Ngoài ra, tôi muốn giữ sự phụ thuộc của tôi ở mức tối thiểu. Điều này có nghĩa là tôi thà lấy thứ gì đó có nguồn gốc từ JRE hoặc JDK, ví dụ: thực hiện tham chiếu JAX-WS hoặc JAX-RS.

+0

Cảm ơn bạn vì điều này, rất nhiều thông tin. –

+0

Bạn có thể vui lòng cập nhật câu trả lời này cho năm 2016 không? Điều gì đã thay đổi và các tiêu chuẩn mới là gì? Bạn có bất kỳ bài đăng trên blog nào đi sâu vào chi tiết hơn không? – gonephishing

+0

Tôi sẽ nói rằng JSON, REST và Jersey là cách để đi: nó nhẹ hơn và dễ sử dụng hơn. –

Các vấn đề liên quan