3

Roo に GWT を統合した最新の Spring Roo/GWT アプリを開発しようとしています。

足場を機能させるのは非常に簡単ですが、そこで RPC がどのように機能するかはよくわかりません。

Spring Roo と GWT 内でクライアント/サーバーを接続するための簡単なサービスを実行する方法の簡単な例を教えてください。

私はそれに関するリソースを見つけることができなかったので、最初は非常に役に立ちます。

thx & よろしく、 フロー

4

2 に答える 2

7

フロー、

あなたが Google Wave に参加しているかどうかはまったくわかりませんが、それは現在の取り組みに遅れないようにするための 1 つの場所のようです。具体的には、この Wave が公開されています: RequestFactory Wave

RequestFactory API に関する詳細 (新しい詳細) について説明します。

基本的な考え方は、ドメイン モデル オブジェクトがサーバー側とクライアント側で必要であるということです。休止状態を使用すると、クラス ファイルで問題が発生する可能性があり、モデル オブジェクトのセットが 2 つになり、カスタム GWT-RPC を使用してサーバー リクエストを作成し、クライアント側とサーバー側のモデル オブジェクト間でマーシャリング/アンマーシャリングを行うことになります。理想的な解決策ではありません。同じモデル オブジェクトを使用できたとしても、RPC のオーバーヘッドは厄介です。

RequestFactory を入力すると、Google のエンジニアはおそらく相応の報酬を受け取っていることがわかります。.roo から生成されたサンプル コード、具体的には ApplicationRequestFactory.java を見てください。

package com.springsource.extrack.gwt.request;

import com.google.gwt.requestfactory.shared.RequestFactory;

public interface ApplicationRequestFactory extends RequestFactory {
    ReportRequest reportRequest();
    ExpenseRequest expenseRequest();
    EmployeeRequest employeeRequest();
}

これは、各ドメイン オブジェクトのリクエスト メソッドを提供するインターフェイスです。プロジェクトで定義されたこのクラスの実装はありません。EntryPoint で GWT.create(...) を呼び出してインスタンス化されます。

final ApplicationRequestFactory requestFactory = 
    GWT.create(ApplicationRequestFactory.class);
requestFactory.init(eventBus);

com.springsource.extrack.gwt.requestパッケージ内にApplicationEntityTypesProcessor.java が表示されます。これはジェネリックを巧みに使用して、プレゼンテーションの後半で使用するドメイン クラスへの参照をパッケージ化しています。ただし、そのパッケージの残りの部分は、各モデル オブジェクトのイベントとハンドラーです。

具体的には、オブジェクトごとに 4 つの自動生成クラスがあります。

  • EmployeeRecord.java - これはドメイン オブジェクトの DTO です。
  • EmployeeRecordChanged.java - これは、フック メソッド onEmployeeChanged を提供する RecordChanged イベントです。
  • EmployeeChangedHandler.java - これは、onEmployeeChanged の特定の動作が必要な場合に実装されるインターフェースです。
  • EmployeeRequest.java - これは、特定のオブジェクトのさまざまなアクセス メソッドをパッケージ化するために ApplicationRequestFactory によって使用されるインターフェイスです。

これらすべてをサポートするために、舞台裏で多くのコードが生成されることに注意してください。そして、M1 から M2 まで、GWT プロジェクトで目に見えるものから多くのものが取り除かれました。もっと変更があると思いますが、M1 から M2 への変更ほど劇的ではありません。

最後に、これらのイベントを UI パッケージのように使用して、ドメインと UI を結び付けることができます。ReportListActivity.java:

public void start(Display display) {
    this.registration = eventBus.addHandler(ReportRecordChanged.TYPE, new ReportChangedHandler() {
        public void onReportChanged(ReportRecordChanged event) {
            update(event.getWriteOperation(), event.getRecord());
        }
    });
    super.start(display);
}

繰り返しますが、詳細についてはウェーブを参照してください。さらに、expenst.roo は Places の使用方法を示しており、かなり洗練された Activity フレームワークも備えています。ハッピーGWTing。

よろしく。

于 2010-07-21T19:44:13.537 に答える
0

あなたが参照している機能は現在、大規模な開発中です (または、Google の担当者は私たちに信じてもらいたいのです ;))。そのため、API と内部の仕組みは最終的なものではなく、GWT 2.1 の最終リリース (これはGoogle IO 2010のGWT セッションで何度か述べました)。ただし、トランク内のBikeshed サンプルを参照して、動作する (できれば ;)) 例を確認できます。最新の (?) サンプル (および Google IO で約束されたクックブック) を含むように見える2.1 ブランチもあります。
個人的には、あなたのコードを新しい RPC モデルに切り替えるのは、GWT に取り組んでいる人たちが安全だと言うまで待ちたいと思います ;)すべてを変更してください:D)。

于 2010-07-19T22:15:57.830 に答える