0

だから私はこの(少し)奇妙な考えを持っています.さまざまなサービスを介して外界と通信するシステムが開発されていますが、それは完全にサーバー側であり、単一の戦争として展開されます. そのための基本的なUI(開発/デバッググレード、本番用ではありません)を書きたいと思います。主な目標:

  • システム サービスの呼び出しを避け、代わりに Java オブジェクトで直接メソッドを呼び出します。
  • GWT を使用する
  • テストケース (testng) と tomcat で展開された war の両方で動作する必要があります (できれば、開発および実稼働 gwt モードの両方で)
  • 別々に保管し、システムへの変更を制限します

だから... gwtでこれを行う方法は?tomcat にデプロイするときは、両方を同じ戦争に投入します。(異なる戦争には異なるクラスローダーがあるため)。テストケース (統合、db などを使用) を実行するときは、初期化中に組み込みの jetty を開始し、新しい gwt サーブレットを登録します。

わかりました、これは実行可能に聞こえます。しかし、開発モードはどうですか?通常の開発モードを開始できるようにしたいと思います。

  • UIコードを変更する(明らかにそうするでしょう)、そして
  • サーバー側のコードを変更します (通常は jrebel で実現します) - しかし、この場合、テストケースを実行するにはどうすればよいでしょうか? 私は確かにそれらを書き換えません。

UI とシステムを同じ jvm で実行するという考えを捨てることは助けになり、適切な分離を可能にしますが、無意味な RPC/RMI/何かを書くことを強いることにもなります。

これにアプローチする方法についての洞察はありますか?

ところで、これは勤務時間外のプロジェクトなので、実際のシステムでは絶対にやらないというクレイジーなアイデアは大歓迎です。

4

1 に答える 1

0

バックエンド (Tomcat、Jetty など) とフロントエンド (GWT 開発モード) を別々の JVM で実行すると、問題なく動作します。これは、実際には多かれ少なかれ推奨されるアプローチです (特に、ある時点で SuperDevMode を使用する場合)。

Eclipseを使用した私の開発戦略は次のとおりです。

  1. デバッグ モードで WTP と Jetty を使用してバックエンド サーバーを起動します (バックエンドで何かを変更したときにクラスをホット スワップするための JRebel)。
  2. GWT 開発モードを開始する
  3. ブラウザーで GWT アプリを開く

このように、GWT 部分で何かを変更すると、ブラウザを更新するだけで、UI に変更が表示されます。
JRebel は、バックエンド部分のすべての変更を処理します。

RequestFactoryフロントエンドとバックエンドの間の通信は、本番モード ( 、RPCまたは)で行われる場合と同じ方法で行われますRequestBuilder

于 2012-09-17T09:47:24.447 に答える