Отслеживание хода удаленного вызова, извлекающего сериализованный объект
У меня есть клиент / серверное приложение, которое использует Java/Spring. Клиент обращается к серверу через httpinvokers и делает запросы, которые возвращают сериализованные объекты.
У нас есть вызов, который обрабатывает очень большой сериализованный объект 50 МБ +. Очевидно, что этот вызов занимает несколько минут для обработки. Есть ли способ отследить ход этого звонка? Например, было бы идеально, если бы я мог проверить объем данных, передаваемых во время вызова, возможно, используя отдельный поток.
Спасибо
1 ответ
Вам нужно будет сделать 2 разных вызова (2-й будет асинхронным). Ваш сервер будет реализовывать шаблон наблюдателя для обновления данных, которые передаются объекту, который его наблюдает. Сервер будет записывать эти 50 МБ данные порциями, а не потоком.
Класс наблюдателя будет другим классом, который вы будете вызывать асинхронно. Наблюдатель сохранит в своем составе, какое количество данных было передано.
Это своего рода та же концепция, которую Gmail реализовал до того, как HTML5 был выпущен в индикаторе загрузки приложения. Что они сделали, так это то, что с помощью html control они загрузили вложение, которое записывалось на стороне сервера, и в то же время использовали флэш-объекты для отправки вызова на этот сервер, чтобы узнать, сколько данных было сохранено.