2013-03-18 27 views
14

SAAJ: SOAP với Attachments API cho JavaSự khác nhau giữa MTOM và các tính năng đính kèm được cung cấp bởi SAAJ là gì?

MTOM: SOAP Message truyền Tối ưu hóa cơ chế

hiểu biết đơn giản của tôi: họ đối phó với file đính kèm SOAP, với MTOM là hơn tối ưu hóa phiên bản của SAAJ . Điều này có đúng không?

Có phải họ chỉ đơn giản là 2 cách khác nhau để làm điều tương tự không? Hay tôi đang cố so sánh táo và cam ở đây?

Tôi có thể sử dụng SAAJ và MTOM cùng nhau không?

Trả lời

30

Nó phức tạp hơn một chút. SAAJ là một API Java cũ được sử dụng để thao tác các phong bì SOAP, vì vậy việc gửi các tệp đính kèm nhị phân có thể được thực hiện theo cách thông minh (không phải là chuỗi mã hóa BASE64 trong nội dung thư). SAAJ là một loại giao diện cấp thấp, bạn cần phải xây dựng phong bì SOAP "bằng tay" trong mã của bạn và thêm tệp đính kèm vào nó.

Nếu bạn không cần phải làm việc với mã cũ và bạn muốn làm việc trực tiếp với phong bì SOAP, hãy xem trên JAX-WS Giao diện điều phối và nhà cung cấp.

MTOM là một con thú khác. Nó không phải là một API dịch vụ web đầy đủ - đó là cách chuyên biệt để gửi các tệp đính kèm. Nó có thể được sử dụng bởi bất kỳ API dịch vụ web "đúng" nào như JAX-WS hoặc SAAJ (nếu bạn quản lý để buộc SAAJ hoạt động theo cách đó).

MTOM (gần như) luôn được sử dụng với XOP, một cách hiệu quả hơn để gửi dữ liệu nhị phân, so với BASE64 (có chi phí lớn). Tệp đính kèm được gửi riêng lẻ dưới dạng tệp đính kèm MIME và loại MIME được xử lý đúng cách (đã từng là vấn đề đối với các tương tác công nghệ Java-Microsoft).

Ngày nay, hãy quên đi SAAJ, sử dụng hỗ trợ JAX-WS + MTOM được cung cấp bởi hầu hết các triển khai JAX-WS.

+1

Câu trả lời hay. Đó là definitelly giá trị upvotes hơn. – Hubert

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