2010-12-13 8 views
3

Pythonの遅延ライブラリのJavaバージョンを知っている人はいますか?または、それを実装する方法に関するアイデアですか?Google App Engine:Pythonの遅延ライブラリのJava版ですか?

EDIT:アプリケーションエンジンはhttp://code.google.com/appengine/articles/deferred.htmlですが、そのライブラリはPython専用です。私は似たようなを探していますが、それはあなたがするが、タスクキューAPI内に依存しているリンク、それは

+0

お願いしますか? 、どちらもApp EngineのSDksを持っています –

答えて

3

Javaのバージョンでは遅延が発生していますが、何もリリースされていません。 google-appengine-javaグループのアーカイブを検索すると、これを実装するユーザーコードが表示されることがあります。それはPythonのようにきれいではないことを覚えておいてください。特定のインタフェースを実装する直列化可能なクラスを宣言しなければなりませんが、Pythonではほぼすべての関数またはメソッドがうまくいきます。

0

いやで動作しますApp Engine。タスクapiはjavaで利用可能です。しかし、言語としてのJavaでは、Pythonのやり方で関数/メソッドを引数として渡すことはできません。したがって、遅延ライブラリのJavaバージョンはPythonのものと同じようには見えません。

誰かが私たちに既存のものを指していないと仮定した場合、Deferrableのようなインタフェースを定義し、そのインタフェースを満たすオブジェクトに引き渡したい動作をカプセル化することができます。これらのオブジェクトを処理できるハンドラを実装し、そのハンドラを使用するようにQueueを設定する必要があります。

ここで難しいのは、Pyferに比べてJavaの動的レベルが低いため、Deferrableのインターフェイスを使いやすく、構文的に甘くすることです。

非常に限定された実装として、遅延は実行する必要がある単なるURLであると言えるでしょう。次に、遅延可能なインタフェースは、文字列を返すメソッドを1つだけ必要とし、ハンドラは非常にシンプルになります。 OTOH、あなたはそのURLを実装するところまで複雑さを押し込んだだけです。

2

遅延ライブラリを実装するための方法を明らかdidntは、これが唯一のpythonのためであるGAE/Javaの

0

あります - JDeferred

JDeferredはjQueryの繰延オブジェクトに似たJava繰延/約束ライブラリです。

// deferred object and promise 
Deferred deferred = new DeferredObject(); 
Promise promise = deferred.promise(); 
promise.done(new DoneCallback() { 
    public void onDone(Object result) { 
    ... 
    } 
}).fail(new FailCallback() { 
    public void onFail(Object rejection) { 
    ... 
    } 
}).progress(new ProgressCallback() { 
    public void onProgress(Object progress) { 
    ... 
    } 
}).always(new AlwaysCallback() { 
    public void onAlways(State state, Object result, Object rejection) { 
    ... 
    } 
}); 

// with the reference to deferred object, you can then trigger actions/updates 
deferred.resolve("done"); 
deferred.reject("oops"); 
deferred.progress("100%"); 
関連する問題