Перехват исходящих http-запросов сервлета - PullRequest
3 голосов
/ 02 марта 2011

Я работаю над школьным проектом, в котором я запрашиваю и получаю довольно большие XML-документы с центрального сервера. Вначале это было нормально, так как я редко делал эти запросы (HTTP GET), но по мере развития проекта у меня появилось больше вещей, связанных с этими данными, и теперь у меня есть сервлеты, запрашивающие 3 или 4 документа XML, каждый это собственный отдельный запрос GET, который приводит к увеличению времени генерации страницы более чем на 25 секунд.

Невозможно изменить способ обслуживания данных, а также способ их запроса, поскольку у меня довольно большая база кода, и она не настолько отделена, как, возможно, следовало бы.

Есть ли умный способ прослушивать, когда мои сервлеты выполняют эти GET-запросы, перехватывать их и, возможно, вместо этого предоставлять им локальную кэшированную версию? Данные не ТАК изменчивы, поэтому «живые» данные не нужны.

До сих пор мне не удалось найти информацию о прослушивании исходящих запросов, сделанных Tomcat ...

Ответы [ 3 ]

1 голос
/ 02 марта 2011

Думаю, многое будет зависеть от вашего коэффициента попадания в кеш.Если одни и те же 3-4 документа (или небольшая группа документов) запрашиваются на регулярной основе, локальный кеширующий прокси-сервер (например, Squid) может быть возможным.Java может быть настроена для использования прокси-сервера для HTTP-запросов.

0 голосов
/ 04 марта 2011

В итоге я использовал ContextListener для загрузки большей части данных при запуске в дополнение к «дате истечения» в атрибутах контекста сервлета. Это делает для некоторых медленных запусков (9 GetRequests на центральный сервер!), Но резко сокращает время загрузки нашей страницы.

0 голосов
/ 02 марта 2011

Вы, вероятно, можете реализовать это, используя HttpFilter.Может использоваться как кеш.Если запрошенный документ уже находится в кеше, просто верните его;если не перенаправить HTTP-запрос вашему сервлету.

...