Заставьте два сервера общаться друг с другом - PullRequest
0 голосов
/ 20 июля 2009

У меня есть приложение, написанное на GWT и размещенное на Google AppEngine / Java. В этом приложении пользователь будет иметь возможность загрузить видео / аудио / текстовый файл на сервер. Эти файлы могут быть большими, до 1 Гб или около того, и поскольку GAE / J не поддерживает большие файлы, я должен использовать другой сервер для хранения этих файлов. Это было бы легко реализовать, если бы в браузерах не было функции междоменной безопасности. Итак, я думаю, чтобы заставить GAE Server общаться с моим сервером (Glassfish или любыми другими серверами Java, если это необходимо), чтобы указать URL-адрес файла и, если возможно, отправить состояние загруженного файла (сколько процентов было загружено), чтобы я мог показать статус на экране клиентов. Вот что я думаю сделать.

Когда пользователь загружает страницу GWT, которая хранится в GAE / J, он / она загружает файл на мой сервер, затем мой сервер отправляет ответ обратно в GAE, а GAE отправляет ответ клиенту. Если этот сценарий возможен, что было бы лучшим способом реализовать диалог GAE с Glassfish?

Ответы [ 3 ]

1 голос
/ 20 июля 2009

На самом деле до этого, возможно, вы можете попробовать использовать первый подход через обход междоменной безопасности браузеров с использованием iframe. Для этого есть готовые компоненты, но для вашей проблемы, какой из них можно использовать, я не знаю. Просто Google для этих компонентов ...

0 голосов
/ 26 апреля 2010

Один из вариантов - подождать - ограничение в магазине не всегда будет 50 МБ!

Если вы спешите, я бы предложил такой подход:

  1. Пусть приложение App Engine сгенерирует подписанный токен, который означает, что у пользователя есть разрешение на загрузку файла. Маркер должен содержать текущую дату и время, идентификатор пользователя, максимальный размер файла и любую другую соответствующую информацию, и должен быть подписан с использованием HMAC-SHA1 с секретным ключом, который знает ваше приложение App Engine и ваш сервер.
  2. Верните пользователю форму, которая отправляет POST на URL-адрес вашего хост-сервера BLOB-объектов и встраивает токен, созданный на шаге 1. Если вы хотите получать уведомления о прогрессе, вы можете использовать такой инструмент, как plupload , и отправьте форму в IFrame, обслуживаемом вашим сервером загрузки.
  3. Когда пользователь загружает файл на ваш сервер, сервер должен вернуть перенаправление обратно в приложение App Engine с новым токеном, встроенным в URL-адрес перенаправления. Этот токен, снова подписанный общим секретом, содержит идентификатор недавно загруженного файла.
  4. Когда ваше приложение App Engine получает запрос на URL перенаправления, оно знает, что загрузка была завершена, и может записать новый идентификатор файла и т. Д. В хранилище данных.

В качестве альтернативы вы можете использовать Amazon S3 , который уже поддерживает все это с поддержкой HTML Form .

0 голосов
/ 24 апреля 2010

Делая так, как вы предлагали использовать Служба получения URL Недостатком этого является то, что вы вводите зависимости на нескольких сайтах внутри своих веб-страниц.
Недостатком использования службы получения URL-адресов является то, что вам нужно платить по количеству байт, переданных после достижения свободной квоты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...