0

私は、RemoteService 実装をある GWT プロジェクトから新しいプロジェクトに再利用しようと、しばらく苦労してきました。全体像は次のとおりです。

私は smartgwt-mobile プロジェクトを運用していますが、通常の smart-gwt を使用して、同じプロジェクトのデスクトップ バージョンが必要であると判断しました。この新しいアプリの GUI は明らかに異なりますが、サーバー側のコードはまったく同じです。

新しいソース構造内の他のプロジェクトのパッケージフォルダーをリンクするか(GWTプラグインでEclipseを使用しています)、または借用したコードパスを追加することにより、RemoteServiceインターフェース、その非同期対応物、およびサーバーパッケージ全体を「借用」しようとしましたビルド パスへのフィルター処理されたソース フォルダーとして、これは Eclipse 依存関係チェッカーを満たしますが、GWT コンパイラーは借用したコードを見つけることができず、モジュール .gwt.xml ファイルに「継承」宣言を追加する必要があることを示唆しています。

これを行って再コンパイルすると、借用したコードのルートに 2 番目のモジュール .gwt.xml ファイルが必要になります。これは、他のプロジェクトに影響を与えるため、受け入れられません。

GWT モジュールのドキュメントを読んでいますが、そのようなスキームを実装する方法がわかりません。私が達成しようとしていることを実際に行うことは不可能かもしれません。

これで問題が解決するのであれば、モバイルとデスクトップの両方の smartgwt プロジェクトに継承される GWT RemoteService モジュールを単純に定義する 3 番目のプロジェクトを作成したいと思います。

この問題に取り組む方法について誰か提案がありますか?

4

2 に答える 2

1

同意します "third project that simply defines a GWT RemoteService module that then will be inherited by both the mobile and desktop smartgwt projects"

なぜなら、私はすでにこれをやっているからです。はい、それは明らかに、DAO私のDBビジネスロジックメソッドがすべて含まれているプロジェクト(DBレイヤー)です。

そして、DAO layerあなたdataservices(ex.webservices).

于 2013-03-02T11:31:51.350 に答える
0

これが私が問題を解決した方法です。既存のGWTプロジェクトソースフォルダーへのリンクに関する問題は、GWTコンパイラーが常に(少なくともそのように見える)GWTモジュール定義ファイル(.gwt.xml)を見つけることを期待していることです。Eclipse依存関係リゾルバーに問題がないにもかかわらず、GWTコンパイラーが満足するような方法でソースフォルダーにリンクすることができませんでした。

そこで、GWTEclipseプラグインを使用して3番目のプロジェクトを作成しました。「CreateSampleCode」オプションのチェックを外したので、空のGWTプロジェクトになってしまいました。次に、「追加」>「新規」>「その他」>「Google」>「モジュール」を選択し、モジュール名(例:「myModule」)、パッケージ名(例:「com.myCompany.myModule」)を入力して「完了」をクリックしました。 。GWT New Moduleウィザードは、パッケージとその下に「com.myCompany.myModule.client」という名前の子パッケージを作成し、「com.myCompany.myModule.server」を自分で作成しました。

ここで、RemoteServiceと関連クラス(実装と非同期バージョン)に加えて、借りたい元のプロジェクトからRemoteServiceコードが呼び出すすべてのサーバー側コードをコピーして、新しいプロジェクトに貼り付けました。すぐにすべての依存関係が満たされ、新しいSmart-GWT Webアプリプロジェクトで[ビルドパス]ダイアログを開き、[プロジェクト]タブにGWTリモートサービスモジュールプロジェクトを含めました。最後に行うことは、継承要素を.gwt.xmlファイルに追加することでした。

<inherits name='com.myCompany.myModule.MyModule'/>

Voilá:これですべてです。「GWTCompileProject」を選択すると、警告なしにコンパイルされ、開発モードで実行されます。

私は今でも最初のプロジェクトから共有コードを削除し、モジュールから継承する必要があります。これは、私がすでに行ったことの単なる繰り返しです。

結局、これは私が想像していたほど苦痛ではなかったので、このアプローチをお勧めします。

于 2013-03-04T17:37:27.413 に答える