7

私は GWT 2.4 を使用しており、大量のコードが既に作成されています。GWT プラグインに付属する Jetty サーバーは、アプリ エンジンを可能な限り模倣するためにプロジェクトで使用できる jar を非常に厳密に制御していることを理解しています。Tomcat 7 にデプロイする必要があります。Eclipse でプロジェクトを変更し、動的 ​​Web プロジェクトとして「祝福」したので、WAR をエクスポートして、QA および実稼働の Tomcat にアップロードできます。

埋め込まれた tomcat でアプリを実行 (およびデバッグ) するための助けが必要です (正直な動的 Web プロジェクトのように)。私はすでに eclipse で tomcat をセットアップしており、CAS サーバー Web アプリをそれにデプロイしています。

ここや他の場所で、古い投稿や紛らわしい投稿をたくさん用意しました。基本的に、パッケージ化された Jetty サーバーで得られるのと同じデバッグ環境を探していますが、Eclipse で WTP を使用して構成された自分の tomcat で ... 実稼働環境を模倣できます (Jetty がアプリ エンジンを模倣するように)。

どんな助けでも大歓迎です。

4

2 に答える 2

7

おそらくもう少し簡単なはずですが、可能です。これが私がそれを行う方法です:

1. Web サーバーのセットアップ

  • Eclipse のJavaEE版を使用して、Tomcat 7.0 サーバー アダプターをセットアップし、環境を定義します。Preferences > Server > Runtime Environments
  • File > New > Project... > Web/Dynamic Web Project
    • 最初のステップで設定したターゲット ランタイムを選択します
    • 重要:コンテキスト ルートに、次のように入力します。/
  • HTML ファイルとサーブレットを作成し、次を使用してセットアップを実行してみますDebug As > Debug On Server

2. GWT コード サーバーの追加

  • Project > Properties > Google > Web Toolkit > Use Google Web Toolkit
  • 重要:Project > Properties > Java Build Path > Order and Export Java ビルド パス ( )の順序は常に変更する必要があります。http: //code.google.com/p/google-web-toolkit/issues/detail?id=4479を参照してくださいパスのほとんどの上にあります。
  • Project > Properties > Google > Web Application: War ディレクトリ = "WebContent"、"Launch and deploy from this directory" にもチェックを入れる
  • サンプル GWT コンテンツをいくつか作成します (サンプル GWT プロジェクトを作成し、そのほとんどをコピーします)
  • プロジェクトを GWT コンパイルしようとしています。これは、ビルド パスの順序が正しいかどうかを示しています。正しくない場合、コンパイラは早期に "java.lang.NoSuchFieldError: warningThreshold" で失敗します。
  • Debug As > Web Application- デバッグ構成を作成するだけです。デバッグを停止します。デバッグ構成を編集し ( Run > Debug Configurations...)、[ビルトイン サーバーの実行] の選択を解除します。デバッグを再開します。

これで、ついに、サーバーとクライアントの両方の部分をデバッグできます (両方を開始するには、2 つの [デバッグ] アイコンをクリックする必要があります!) クライアント側は [開発モード] ビューから、サーバー側は [サーバー] ビューから管理できます。 " 見る。結局のところ、それはうまく機能し、「リソースが変更されたときに自動的に公開する」機能 ( Servers view > myServerName > Open > Publishing) を使用すると、統合された Jetty よりも優れている場合があります。

于 2012-07-28T11:37:12.470 に答える
1

最初の考えでは、なぜあなたが問題に直面するのか、私にはよくわかりません。おそらく、Eclipse のレイアウト方法は、あまりにも複雑で気が遠くなるようなものです。

私の Eclipse では、GWT のデバッグ中にデフォルトの桟橋をサーバーとして使用していました。ただし、Tomcat や JBoss にデプロイすると、jetty で捕捉されない問題がいくつかありました。

また、Tomcat または JBoss インスタンスを Eclipse に追加し、アプリをそれらのサーバー インスタンスに追加すると、デバッグはすぐに機能しました。重要でありながら単純な情報が 1 つ欠けていませんか?

以下がミッシングリンクを埋めると仮定しましょう...

  1. サーバー インスタンスの検索/追加:

    Eclipse のパッケージ エクスプローラー (またはプロジェクト エクスプローラー) には、個人用プロジェクトの他に、"サーバー" プロジェクトが表示されます。その下には、すべての Tomcat インスタンスをリストする構成ノードがあります。

    パッケージ エクスプローラーに「サーバー」ノードが表示されない場合は、ワーキング セット フィルターが原因である可能性があります。(そして、ワーキング セットが何であるかわからない場合は、Eclipse での器用さを強化する必要があると思います)。

    まだ Tomcat インスタンスがない場合は、「servers」プロジェクトを右クリックして新しいサーバーを追加します (パッケージ エクスプローラー -> 新規 -> サーバー ...)。Tomcat ホームの場所を尋ねられます。そして、サーバーインスタンスの目的のポート番号。もちろん、ポート番号が、ボックスの他の inet 操作で使用されるポートと衝突しないようにする必要があります。

  2. ポート番号の 2 回目の設定

    パッケージ エクスプローラーのサーバー インスタンス ノードには、新しい Tomcat インスタンスの作成時に指定したポート番号と一致するようにポート番号を設定するために編集する必要があるファイルがあります。編集するファイルがわからない場合は、作成した Tomcat のバージョンを調べて、どのファイルにポート番号の構成が含まれているかを調べる必要があります。

    1 回目は、サーバー インスタンスが実行されていると予想される場所とポートを Eclipse に通知するため、ポートを 2 回目に構成する必要があります。2 回目は、サーバー インスタンス自体を構成することです。

  3. アプリをサーバーに追加する

    ただし、「サーバー」プロジェクトのノードでは、Tomcat インスタンスのみを構成できます。Tomcat インスタンスをさらに構成するための「サーバー ビュー」と呼ばれる別のビューがあります。Window->Show View->Server->Servers から Server ビューを有効にする必要があります。

    「サーバー ビュー」でサーバー インスタンスを右クリックして、アプリを追加します。

  4. Maven で生成されたターゲットからデバッグを実行します。

    war 構造をデバッグして、war で欠落している jar を見つけたい場合があります。そして、war から jar を段階的に削除して、サーバーによって既に提供されている jar を見つけます。JBoss はすでに多くの jar を提供しているため、開発用の jar が JBoss が期待するバージョンであるかどうかを確認する必要があります。

    ワークスペースに別の Eclipse プロジェクトを作成し、2 番目のプロジェクトに Eclipse フォルダーのソフトリンクを作成して、最初のプロジェクトの Maven 生成ターゲットを指すようにします。そして、target/{maven generated webapp directory} を 2 番目のプロジェクトの webapp ディレクトリとして指定します。「maven によって生成された webapp ディレクトリ」とは、Maven によって生成された解凍された中間ディレクトリです (Maven によって圧縮された war ファイルを生成するために使用されます)。

    これは、Eclipse 開発ボックスで実稼働 tomcat/jboss サーバーを忠実に複製できる場合、実稼働 war をデバッグする最もクリーンな方法です。

  5. あなたがJBossを好むなら。

    どういうわけか、パッケージ/プロジェクト エクスプローラーの「サーバー」ノードに JBoss 構成ノードが表示されません。それらを編集するには、JBoss インストール ディレクトリに移動する必要があります。

  6. リモートデバッグ。

    運用ボックスまたは別のボックスにあるサーバーでアプリをデバッグする場合は、デバッグ中にその tomcat インスタンスを開始する必要があります。あなたはそれについて熟読するべきです。デバッグ ポートを指定する必要があります。

    次に、Eclipse の [Run] -> [Debug Configuration] -> [Remote Java Application] で、アプリとデバッグ ポートを指定します。

    初めてデバッグするとき、特にアプリに複数のプロジェクトの依存関係がある場合、Eclipse はソース ファイルがどこにあるかを "認識しない" 場合があります。(Eclipse がプロジェクトのリストからソース ファイルを検索できないのはなぜですか?) とにかく、ソース ファイルの場所を指定する必要があります。そして、デバッグが別のプロジェクトの依存関係にトラバースするときに、ソース ファイルの場所を上書きする必要があります。

それで、ほら!それが、デバッグを機能させる方法です。本番環境の問題を診断する必要がない限り、リモート デバッグはできるだけ避けることをお勧めします。リモート デバッグを行っている場合を除き、war をローカル サーバーにデプロイしようとせず、単にプロジェクトをサーバー インスタンスに関連付けることに依存してください。

エクリプスは難しすぎる

Eclipse があまりにも複雑で、その機能をくまなく調べなければならないことはわかっています。あなたはそれに耐えなければなりません。Eclipse のメニューとビューは、ユーザー中心ではなく、プラグイン プログラマ中心に最適化されているようです。

たとえば、新しいソフトウェアをインストールするために「ヘルプ」にアクセスする必要があるのはなぜですか? 以前は、「ヘルプ -> 新しいソフトウェアのインストール」が、新しいソフトウェアのインストールに関する説明書であると思っていました。

私が Package Explorer でサーバー インスタンスにアプリを追加できるように、Eclipse チームが操作を組み合わせなかったのは残念です (そして私を悩ませています)。なぜだめですか?ユーザーとして、サーバーを構成するためのエントリ ポイントは 1 つだけだと思います。

混乱を軽減するために、Springsource のバージョンの Eclipse (STS) をダウンロードしてインストールすることを人々に勧めています。これは同じ Eclipse ですが、STS には必須パーツがインストールされており、互換性のあるインストール可能なプラグインを指すダッシュボードがある点が異なります。Tomcat は VMware tc Server としてプリインストールされています。また、ビューはサーバー インスタンスを表示するように正しく構成されています。また、正しく実行可能な Eclipse-Maven ブリッジ プラグインがプリインストールされています。

于 2012-07-29T17:05:58.667 に答える