0

私はこのRestlet構造を持っています:

サーバーオブジェクトをインスタンス化します。

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

その後、Applicationを拡張する新しいMyAppクラスをインスタンス化します。

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サーバーのように使用しています。私のサーバーは問題なく動作します。古典的なポーリングでajax呼び出しを行うjavascriptクライアントがあります。しかし、サーバーにロングポーリングを実装する必要があります(何らかの理由でストリームモードとプッシュモードを破棄します)。これを実装する方法について読んでいます。最初の方法(醜い方法)は次のようになります。-サーバーでスレッドをスリープ状態にし、サーバーに何かがある可能性があるときに再開します。この方法はスケーラブルではないため破棄されます(ここにそれに関する投稿があります)。-2番目の方法は、バージョン7のJetty継続APIを使用することです。このリンクでは桟橋の彗星APIを使用してリクエストを一時停止する方法はわかりますが、この別のリンクに記載されているように、レストレットの実装にどのように適用するかわかりません。

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

ただし、getContinuationメソッドはServletRequestオブジェクトを受け取ります。しかし、私のリクエストはServletRequestではありません。RestletでServletRequestを変換または使用する方法を知っている人はいますか?おそらく私はサーバープログラミングのすべての概念を持っているわけではありません。

4

1 に答える 1

0

Restletによってインスタンス化された突堤で突堤の継続を使用することはできません。ロングポーリングを実装するために、Restletを忘れて、Javaの同時実行性で実装しました:wait()notify()そしてすべてが正常に実行されています。

于 2012-07-30T11:05:41.720 に答える