1

GWT を使用して Web UI を開発しています。ウィジェットのみで作業している間は、Firefox 拡張機能を使用して Eclipse からデバッグできましたが、UI を他の OSGi バンドルと統合しているため、このソリューションは使用できません。

GWT アプリケーションをデプロイするために、.war を作成し、それをBNDを使用して OSGi バンドルに変換します。次に、Pax Runner と Pax Web を使用してすべてのバンドルを含む OSGi コンテナーを起動すると、アプリケーションは正しく動作しますが、生成された JavaScript コードで何かが失敗した場合、まともな出力エラーやデバッグ機能がありません。

OSGi から GWT アプリケーションを「デバッグモード」で起動する方法はありますか?

このシナリオで役立つ他のアイデアはありますか?

更新:com.google.gwt.dev.DevModeからブラウザ コネクタを使用して、またはその一部をインスタンス化することは可能Activatorでしょうか?

4

2 に答える 2

1

OSGi、GWT、およびオプションで Eclipse を使用して、開発モードを起動することができました。解決策は-noserverGWT 開発モードのフラグでした。アプリケーションの実行中はコードの変更を認識しませんが、コンパイルされたコードのデバッグと例外トレースの受信に使用できます。

また、Eclipse なしで開発シェルを実行することもできましたが、このソリューションに興味がない場合は、Eclipse 統合セクションに直接ジャンプできます。

Eclipse なし(例外のみ、デバッグなし)

次の情報を知っておく必要があります。

  • ソースはどこにありますか ( $SRC)
  • $GWT_PATHGWT ライブラリ ( )、特にgwt-user.jarとはどこにありますかgwt-dev.jar
  • (オプション) HTTP OSGi サーバーがアプリケーションを提供するポート ( $PORT)。
  • アプリケーションの起動 URL ( $URL)
  • アプリケーションの .gwt.xml ファイルを含むパッケージ ( $PACKAGE)。

次に、実行する必要があります。

java -cp $SRC:$GWT_PATH/gwt-user.jar:$GWT_PATH/gwt-dev.jar \
    com.google.gwt.dev.DevMode -noserver -port $PORT \
    -startupUrl $URL $PACKAGE

例えば:

java -cp src/:lib/gwt-2.0.3/gwt-user.jar:lib/gwt-2.0.3/gwt-dev.jar \
    com.google.gwt.dev.DevMode -noserver -port 8080 \
    -startupUrl httplocalgui.html es.warp.samples.httplocalgui

そして最後に、通常どおりアプリケーションをデプロイするだけで済みます。私の例では、デフォルトのポート 8080 を使用して、pax-runner と pax-web を使用してデプロイします。

エクリプスで

  1. プロジェクトのデバッグ構成を開きます
  2. サーバータブに移動し、「ビルトインサーバーを実行する」のチェックを外します
  3. [属性] タブに移動し、「 」を追加します-port 8080(8080 が Web コンテナーで使用されるポートである場合)。組み込みサーバーのないこの引数は、開発モードがブラウザーを呼び出すために生成する URL を作成するためにのみ使用されると思います (または、エリプスがブラウザーのアドレスバーにコピーして貼り付けることができる URL を生成するために使用します)。
  4. アプリケーションをデプロイします。
  5. GWT 拡張機能がインストールされているブラウザーからアクセスします (追加することを忘れないでください?gwt.codesvr=127.0.0.1:9997) 。
于 2010-06-21T11:14:02.643 に答える
0

私は最近同じ問題を抱えていましたが、残念ながら良い解決策は見つかりませんでした。

最終的に、クライアント側のコードで使用しているすべてのGWTサービスの模擬実装を作成しました。クライアント側のコードをデバッグする必要があるときは、下にあるOSGiを使用する実際のサービスではなく、これらのサービスに切り替えるだけです。次に、EclipseでGWTアプリケーションをデバッグモードで実行できます。これは完璧にはほど遠いので、モックを使った作業が必要ですが、私にとってはうまくいきます(少なくとも今は)。

于 2010-06-17T10:20:01.440 に答える