Использование продолжений Jetty в Restlet для реализации длительного опроса

У меня есть такая структура рестлета:

Я создаю объект Server:

server = new Server(new Context(), config.getServerProtocol(), config
                            .getServerPort());

После создания экземпляра нового класса MyApp, расширяющего Application:

app = new org.myproject.restlet.server.MyApp(
    config, server.getContext());
app.start();

И запускает сервер:

server.setNext(app);
server.start();

У меня нет компонента, MyApp распространяет маршрутизатор и обрабатывает запрос. Если к этому моменту у кого-то есть комментарий, буду благодарен. Я использую Restlet 2.0.14 JSE, и я связываю jar-файлы с причалом, чтобы использовать их как свой http-сервер. Мой сервер работает нормально, у меня есть клиент javascript, который выполняет вызовы ajax, с классическим опросом. Но мне нужно реализовать длинный опрос на сервере (по некоторым причинам я отказываюсь от потокового и push-режимов). Я читаю о том, как это реализовать, первый способ (уродливый) может заключаться в следующем: - Засыпание потока на сервере и возобновление, когда на сервере что-то может быть. Этот способ отбрасывается, поскольку он не масштабируется (вот пост об этом). - Второй способ - использовать api продолжений Jetty версии 7. По этой ссылке Я могу видеть, как использовать api причала кометы, чтобы приостановить запрос, но я не знаю, как применить к моей реализации рестлета, как указано в этом другая ссылка, я вижу:

Continuation continuation = ContinuationSupport.getContinuation(request);
continuation.suspend();

Но метод getContinuation получает объект ServletRequest. Но мой запрос не является ServletRequest. Кто-нибудь знает, как преобразовать или использовать ServletRequest в рестлете? Наверное, у меня нет всех концепций серверного программирования.


person Kalamarico    schedule 06.07.2012    source источник
comment
на данный момент, теперь, когда сервлет 3.0 был выпущен некоторое время, я бы поискал сервлет рестлета, который поддерживал асинхронные операции сервлета 3.0 и развертывал его на причале8   -  person jesse mcconnell    schedule 06.07.2012


Ответы (1)


Я не могу использовать продолжения Jetty с причалом, созданным Restlet. Чтобы реализовать длинный опрос, я забыл о Restlet и реализовал с параллелизмом java: wait() & notify(), и все работает нормально.

person Kalamarico    schedule 30.07.2012