0

私は GWT と smartgwt から始めていますが、コードが jetty で機能する場合、必ずしも Jboss で機能するとは限らないことに気付きました。

クライアント側で何かが失敗したときに例外やエラーをデバッグする方法はありますか? jboss コンソールは何も言いません。jbossで実行しているときに、アプリに接続された桟橋ウィンドウを取得できるかどうか疑問に思っていました。

私はNetbeans、jboss 5.1を使用しています

アップデート:

助けてくれてありがとう、私は使用com.google.gwt.logging.Loggingしてきましたが、かなりうまく機能しますが、たとえば netbeans を使用して、クライアント側のコードをデバッグする方法を探していました。jboss で開始するサーバー側コードをデバッグする方法を知っているのでset JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%、netbeans デバッガーを 8787 ポートに接続します。クライアント側をデバッグするために Jboss から同様のことを行う方法はありますか?

また、gwt:debug を使用してクライアント側コードをデバッグする方法も知っていますが、その場合、私のアプリは jboss で実行されておらず、jetty で実行されています。

4

3 に答える 3

1

すでに起動構成が正しくセットアップされていると仮定します (起動環境を、組み込みの Jetty ではなく JBoss に向けます)。開発モードにいる場合は、すでに Java コードをデバッグできるはずです。本番環境でクライアント側のコードをデバッグする場合は、ブラウザの開発ツールを使用してください。

エラー処理について GWT クライアント側の例外を処理するには 2 つの方法があります。

  1. それらをクライアント側に記録します
  2. それらをサーバーに送信し、サーバー側でログに記録します

あなたはサーバー側のロギングを行っていると思います (実際、これはプロダクション モードで必要なものです)。GWT には、クライアント側とサーバー側の両方に対して明確に定義されたエラー処理メカニズムがあります。これらの回答/投稿は、GWT アプリでエラー ハンドラーを適切に設定するのに役立ちます。

GWT での例外処理に関する 7 つのヒント

GWT で remoteLoggingServlet をセットアップする

于 2013-05-15T09:17:28.377 に答える
0

これは古い質問であることは知っていますが、以前の回答は承認済みとしてマークされていないため、次のようにします。

  1. SDBGを使用できます。これは、Eclipse 内からクライアント側のコードをデバッグできるようにする Eclipse 用の優れたプラグインです。開始するには、そのページの入門チュートリアルをご覧ください。組み込みの Jetty ではなく、Glassfish を使用していますが、JBoss でも動作することがわかっています。
  2. Eclipse と Maven を使用している場合は、サーバー側とクライアント側の両方のコードで SmartGWT をデバッグするためにできることのより完全なリストをここで提供します。
于 2016-04-22T21:26:19.440 に答える
0

JBoss EAP7 と GWT 2.7 では、DevMode が削除されて SuperDevMode が使用されるようになり、状況が少し複雑になりました。関連記事 ( GWT のスーパー開発モード) は良い手がかりを提供しますが、私のサーバーとバージョンの組み合わせ (JBoss EAP 7.0、GWT 2.7、Eclipse 用の GWT 2.7 プラグイン、Eclipse 4.5+、および Maven ビルド) ではうまくいきませんでした。主な変更点は、WAR と GWT コードを JBoss EAP 7 にデプロイする方法です。

GWT Super Dev Mode の紹介を読むことをお勧めします

  1. Maven でビルドされた既存の GWT Eclipse プロジェクトがあり、デプロイして実行できると仮定しましょう。ビルドは、myProject/target/myWebInterface-1.0.war のようなパックされた WAR アーカイブ バージョンに加えて、展開された WAR バージョンを myProject/target/myWebInterface-1.0/ に生成します。GWT Maven プラグインが特に myModule.devmode.js と myModule.nocache.js を myWebInterface-1.0/ の下の GWT モジュール サブディレクトリにビルドすることを確認することをお勧めします。

  2. パックされた .war を忘れて、展開されたバージョンを JBoss コンソール経由で JBoss サーバーにデプロイします: [Deployments] > [Add] > [Create an unmanaged deployment] > [Next]。以下のように埋めます。

    ここに画像の説明を入力

    パックされたアーカイブからではなく、ディレクトリ パスから展開する場合でも、「.war」の名前フィールドを必ず終了してください。これにより、JBoss は適用するデプロイメント プロファイル、つまり WAR のプロファイルを理解できます。実際に、デプロイが正常に完了し、インターフェイスが実行されていることを確認できます。

  3. Eclipse でプロジェクトの [プロジェクト プロパティ] を開き、左側のツリーで [Google] > [Web アプリケーション] タブに移動し、[このプロジェクトには WAR ディレクトリがあります] がチェックされていることを確認します。また、[Google] > [Web Toolkit] タブに移動し、[Use GWT] がオンになっていることを確認します。

  4. Eclipse でプロジェクトを右クリックし、[Run as] > を選択しGWT スーパー開発モードます。GWT コード サーバーが起動されましたが、ライブラリの依存関係が不足しているため、失敗する可能性があります (または、準備ができていることを伝える前に少なくともエラーが生成されます)。ただし、簡単に修正できる起動構成が作成されています。したがって、Eclipse コンソールの赤い STOP ボタンから現在の起動を強制終了してください。

  5. 次のように、作成したばかりのデフォルトの起動構成を編集し、すべてのライブラリ依存関係を CodeServer に提供する必要があります。

    • Eclipse のトップ メニュー: [実行] > [実行構成...] > 作成したばかりの Google Web アプリケーションを選択します。
    • [サーバー] タブで、[ビルトイン サーバーの実行] (ポート 8888) をオフにして、[適用] をクリックします。
    • 「引数」タブの下に、「-noserver」オプションが表示されている必要があります
    • Eclipse IDE の JDK と一致させる必要がある場合は、[JRE] タブで JRE を修正します。
    • [クラスパス] タブの [ユーザー エントリ] の下で、元の WAR ビルドからすべてのライブラリ依存関係を追加する必要があります。最善の方法は、Maven .m2 ローカル リポジトリから取得したすべての依存関係を使用して Eclipse ユーザー ライブラリを作成することです。私の場合、GWT フロントエンドと一緒に同じ WAR アーカイブにデプロイされたバックエンド REST サーバーをサポートするすべての Spring Framework ライブラリを追加しました。
    • [適用] をクリックしてから、この更新された構成を [実行] をクリックします。
    • 通常、Eclipse コンソールには、「The code server is ready at http://127.0.0.1:9876/」と表示されます。このトレースの前にエラーがないことを確認してください。
  6. 上記のリンクを新しい Chrome ウィンドウで開きます。あなたは見るでしょう

    ここに画像の説明を入力

    そのページに示されているように、Chromeのお気に入りのブックマークにブックマークを追加します

  7. 展開された (展開された/管理されていない) Web プロジェクトのホームページで、新しい Chrome ブラウザー タブを開きます。

  8. [Dev Mode On] ブックマークをクリックします。GWT モジュールを「コンパイル」することを提案するフレームがポップアップします。それをクリックすると、フレームに「Compiling yourModuleName」と表示されます。また、Eclipse コンソールで GWT コード サーバー アクティビティを追跡し、GWT Java コードを再コンパイルする間に必要なすべてのライブラリ依存関係を提供したことを確認することもできます。

    「Compiling myModule Failed」が表示された場合は、ブラウザ ウィンドウを更新すると問題が解決する可能性がありますが、提案された「Try Again」は機能しません...

  9. その時点から、Eclipse で GWT Java ソースを変更し、ブラウザ ウィンドウを更新して、行った変更の効果をすぐに確認できます。

GWT コードのデバッグ

  1. Java ソースにブレークポイントを設定することで GWT コードをさらにデバッグできますが、その Java コードはクライアント ブラウザで Java Script としてコンパイルおよび実行されます。それは魔法です!次のように進めます。
    • Chrome で開発者ツールを有効にします: ctrl-shift-i を押すか、設定アイコン > その他のツール > 開発者ツールをクリックします。
    • 「JavaScript ソース マップ」が有効になっていることを確認します。ツール設定アイコン > [設定] > ... をクリックします。
    • 次に、左側のナビゲーション ツリー (ツリーの下部) で GWT Java ソースに移動できます。そうでない場合は、ctrl-p を押して既知のソース ファイル (たとえば、現在 Eclipse で編集されているもの) をすばやく開き、Chrome 開発者ツールでブレークポイントを設定します。中央パネル; Web ページを更新すると、デバッガーが実行されてブレークポイントで停止し、元の Java コードにマップされた JavaScript 変数を調べることができます。ブレークポイントは Chrome 開発者ツールからのみ設定されることに注意してください。Eclipse 独自のブレークポイントについては忘れてください。

それがどのように機能するか、非常に簡単に:

  • Eclipse ビルドは、展開された/管理されていないデプロイメントのおかげで、JBoss によって直接使用されます。変更のたびに明示的な再展開が必要なコピーは作成されません。
  • Eclipse 用の GWT プラグインの一部である GWT Code Server は、ソースの変更を検出し、その場でクライアント用の Java Script を再コンパイルします。
  • クライアントのブラウザは、デプロイされた (静的な) WAR アーカイブから取得するのではなく、常にコード サーバーからホット リコンパイルされた Javascript を取得します。
  • コード サーバーは、デフォルトで jetty Web サーバー (ポート 8888) を開始してサーバー側コードをデプロイしますが、これをオフにして、代わりに JBoss サーバーを明示的な展開/非管理デプロイで使用します。
于 2016-09-27T12:10:49.427 に答える