Почему бы вам не запланировать один поток, чтобы узнать погоду каждую минуту или около того, и предоставить его JSP вместо того, чтобы каждый JSP мог получить свой собственный отчет о погоде?
Это намного эффективнеекак для вас, так и для Yahoo, и JSP нужно только искать локальный объект (почти мгновенно) вместо подключения к веб-службе.
РЕДАКТИРОВАТЬ
Некоторые новые требованияв комментариях к этому ответу предлагается другой способ выбора решения.
Кажется, что веб-сервис запрашивает не только погоду, которая не только не меняется так часто, но и одинакова для каждого пользователя.но также и другие данные, такие как полетные данные.
Требования для получения полетных данных сильно отличаются от данных о погоде.Поэтому я думаю, что вы должны определить несколько типов (удаленных) данных и выбрать разные решения для каждой категории.
В качестве основы для требований я бы использовал что-то простое:
- Пользователям быстро нравится их информация, им не нравится ждать
- Объем данных, хранящихся на веб-сервере, конечен
- Удаленные веб-службы имеют своего рода лицензионное соглашение и, вероятно, недовольны 200 одновременнымизапросы одних и тех же данных к одному и тому же источнику (вам)
Быстрый доступ к данным для пользователей лучше всего достигается при наличии данных локально, будь они временные (хранящиеся в компоненте) или постоянные (локальная база данных)).Это можно сделать, периодически запрашивая данные из удаленного источника и используя кэшированные данные в JSP.Это также поможет вам разобраться с третьим пунктом.
Конечное количество данных, хранящихся в веб-службе, означает, что не все может быть кэшировано.Данные, которые различаются для каждого пользователя, или большие наборы данных, которые могут меняться в течение небольших периодов времени, не могут быть легко кэшированы.Не очень хорошая идея загружать данные обо всех рейсах всех аэропортов США каждую минуту или около того.Такие запросы лучше обслуживать, если необходимо выполнить определенный запрос веб-службы.
Теперь нужно определить, когда кэширование данных осуществимо.Если это возможно, сделайте это, в противном случае выполните запрос веб-службы в фоновом режиме.Это можно сделать, представив JSP сейчас и запустив запрос веб-службы в фоновом режиме.JSP может иметь сценарий AJAX, который запрашивает у вашего веб-сервера, готовы ли данные, и вставляет эти данные на страницу, когда они готовы.