3

長い投稿で申し訳ありませんが、ここで直面している問題は私にとって非常に重要です。

GAE を使用し、そのデータストアとトランザクションを行う Eclipse GWT (2.0) Web アプリケーションがあります。一方で、この Web アプリケーションを Google App Engine 以外のインフラストラクチャにもデプロイできるようにしたいと考えています。したがって、別のサーブレット コンテナー (Tomcat 6) と別のデータストア (mySQL や MSSQL など、今のところは問題ありません) を使用して Web アプリをデバッグしたいと考えていました。

Tomcat を使用して Eclipse Web アプリをデバッグできるようにするには、Dynamic Web Projectファセットを実行する必要があります。そうでない場合、サーバー内で Eclipse に追加した新しいサーバーは、サポートされているアプリのリストで GWT モジュールを選択することを拒否します。そして、GWT Web Apps はそれを実行しないだけでなく、プロジェクトのファセットを変更することさえまったく許可しません! しかし、いくつかの関連するタグを .project ファイルに追加すると、Eclipse 内で新しいプロジェクト ファセットを追加できるようになることがわかりました。使用したタグは次のとおりです。

<nature>org.eclipse.jdt.core.javanature</nature>
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>com.google.appengine.eclipse.core.gaeNature</nature>

それで私はそれをしました、私はプロジェクトをEclipseの動的Webプロジェクトに「変える」ことができました。そうすることで、サーバー内のTomcat 6によって処理されるモジュールのリストに追加されるように準拠しました。これはまさに私が望んでいたことであり、App Engine または Tomcat で GWT Web アプリをデバッグするために、Eclipse で自由に 2 つのデバッグ構成を切り替えることができるようになりました。

問題は、Dynamic Web Project ファセットを追加すると、DataNucleus エンハンサーが妨げられることです。何らかの理由で、プロジェクトが動的 Web プロジェクトになると、エンハンサーが呼び出されなくなり、いくつかのクラスが強化されていないというエラー メッセージが表示されます。Google... App Engine... ORM クラスで遊んだり、ビルダーでエンハンサーをチェック/チェック解除したりしても、何も変わりません。エンハンサーの問題は、Tomcat と App Engine の両方のデバッグ構成に影響することに注意してください。

そこで、2つの解決策を考えていました。

(1) Google プラグインの DataNucleus エンハンサーを無効にして、自分で拡張を実行します。そこで、DataNucleus プラグインをインストールして、Eclipse プラグインに関するガイドに従って、プロジェクト固有の拡張機能を構成しました。彼らは、プロジェクトを右クリックすることで、特定のプロジェクトのファイルに対する DataNucleus サポートを有効にできると言います。残念ながら、Eclipse 用プラグインの最新バージョンをインストールした後、そのような右クリック メニューは表示されません! したがって、特定のプロジェクトで拡張機能を有効にしたいことをプラグインに伝える方法がありません! それはどれほどイライラしますか?? (プラグインをアンインストール/再インストールし、保留中の Eclipse の更新を多数実行しました...それでも右クリック メニューはありません。) DataNucleus 拡張機能を有効にする別の方法を知っている人はいますか? 今のところ、Eclipse 内でこのクロスサーブレット コンテナーのデバッグを実行できることが非常に重要であるため、かなり手動のトリックでも満足しています。

(2) GWT の公式 Web サイトhttp://code.google.com/webtoolkit/doc/latest/FAQ_DebuggingAndCompiling.html#How_do_I_use_my_own_server_in_hosted_mode_instead_of_GWT%27sからこのヒントを使用してください 。 .. ホスト モードが必要なため、GWT 2.0 の使用は許可されません。この回避策に関して、GWT 2.0で同様のことを行う方法があるかどうか知りたいですか?

GWT Web アプリを Eclipse 動的 Web プロジェクトに変換することは、アプリケーションの開発を進めるための理想的なソリューションです。上で述べたように、App Engine から Tomcat に、またはその逆に切り替えるのは非常に便利です。したがって、私は回避策 (2) よりも回避策 (1) を好みます。いずれにせよ、この 2 つの点のいずれかに関するヘルプやアドバイスは大歓迎です。

この非常に長い投稿を読んでいただきありがとうございます!

4

2 に答える 2

0

まったく同じ問題に遭遇しました。プロジェクトのプロパティを編集し、コンテキストで datanucleus メニューを表示して、プラグインが確実に機能していました。私の問題は、Eclipseで「Java EE」パースペクティブを使用していたことです。(ところでジュノ)。「Java」コンテキストに切り替えると、datanucleus メニューが元に戻り、サポートを有効にして自動拡張を有効にすることができました。

Window -> Show perspective -> Other -> Java
于 2013-06-01T18:12:02.387 に答える
0

GAE オプションを無効にするだけで Tomcat にデプロイする場合でも、GWT 開発には常に Google プラグイン (GPE) を使用します。

おそらく、私は質問を理解していませんが、jetty で実行されているアプリをデバッグし、アプリを Tomcat に転送することに問題はありませんでした。学ばなければならない問題はありますか?

実際、私のアプリがプレーンな JSP またはサーブレットであり、GWT を使用していない場合でも、GPE を使用していました。しかし、GPE は、GWT または GAE を有効にしないと、jetty の実行を拒否します。そこで、ダミーの GWT アプリを作成するだけです。何年もの間、jetty と tomcat の違いについて心配する必要はありませんでした。そして、tomcat と jetty の違いを利用しなければならないアプリを書かなければならないとしたら、私は自分のことをお粗末なプログラマーだと考えるでしょう。

JEE サーバーを外部サーバーにプッシュする唯一の理由は、Tomcat で実行されるアプリをプロファイリングするためです。

TomcatであろうとJettyであろうと、JEEはJEEです。近所のカフェよりスターバックスを好むなど、Jetty の使用に偏見を持っている人もいると聞きました。コーヒーはコーヒー。

理解できない。なぜjettyでデバッグしてからtomcatにデプロイできないのかを説明する別の論文を書くことができるかもしれません。

于 2011-11-27T05:47:05.340 に答える