2009-10-01 27 views
7

Tôi đang triển khai một dịch vụ web trả về nội dung của các tệp nhị phân. Các tệp lớn khoảng 100MB. Webservice và máy khách được xây dựng dựa trên Axis2.Cách tốt nhất để trả về các khối dữ liệu nhị phân lớn từ một dịch vụ web là gì?

joice tốt nhất cho kiểu trả về của phương thức trả về dữ liệu là gì?

Tôi đã thử byte [], nhưng tôi luôn nhận được OutOfMemoryErrors ở phía máy chủ. Thêm vào đó tôi không vui khi có toàn bộ nội dung tập tin trong bộ nhớ. Có thứ gì đó giống như luồng mà tôi có thể sử dụng thay thế không?

Trả lời

3

Bài viết "Downloading a Binary File from a Web Service using Axis2 and SOAP with Attachments" mô tả chính xác giải pháp tôi đang tìm kiếm. Các khối dữ liệu lớn được thêm dưới dạng tệp đính kèm vào phản hồi SOAP của webservice bằng cách sử dụng "SOAP with Attachments" (SwA).

Tôi có thể sử dụng javax.activation.DataSource cung cấp InputStream và tôi không phải giữ toàn bộ tệp trong bộ nhớ.

7

Thay vì trả lại dữ liệu, bạn có thể trả lại URL tạm thời trỏ đến kết quả lớn này được lưu dưới dạng tệp tạm thời không? Hoặc bạn có thể trả lại tệp của mình dưới dạng một loạt các kết quả nhỏ hơn không?

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