Wednesday, August 08, 2007

JSR-315

JSR-315 добавляет асинхронное взаимодействие к спецификации Java servlets. Автор является разработчиком контейнера Jetty и там уже сейчас можно попробовать подобный подход. По идее эта библиотека (Continuations) должна быть переносимой, но я не пробовал работать с ней на других серверах. А идея, которая за всем этим скрывается, очень полезная.
Предположим, разрабатывается чат. Запрос клиента, посланный на сервер должен вернуть реплику от другого участника. Клиентское приложение должно либо часто повторять такие запросы (опрашивать сервер), либо держать открытое соединение, ожидая когда другой участник ответит (произойдет какое-то событие в приложениях другого типа). И то и другое никак не способствует росту производительности сервера.
Continuations позволяет заморозить на сервере обработку текущего запроса (соответственно, освободив ресурсы сервера для других запросов) и возобновить эту обработку по наступлению нужного события (для чата, например, ответил кто-то etc.): wait/notify модель для сервлетов. Соответственно, освобождается значительное количество ресурсов на сервере, он сможет поддерживать большее количество запросов и т.д.

P.S.
Кстати, здесь находится хорошая обзорная статья от IBM по Java EE 5

2 comments:

Anonymous said...

a RIFE continuations? оно же и есть?

Dema said...

Я таким пользовался в Apache Cocoon. Там continuations сделаны на основе javascript интерпретатора Rhino. Пишешь обработчик на JavaScript где после вызова form.sendPageAndWait() интерпретатор замораживается, пока не засабмитится форма.