2011-10-14 9 views
10

私はJava EEの新機能を採用しており、デプロイメントプロセスが遅くなっていると苦労しています。コードの変更が直ちに起きるDjangoには経験があり、Java EEアプリケーションのホットデプロイメントはちょっと混乱しているようです - ホットデプロイメント(Glassfish、Eclipse躁病ホットデプロイ、Jettyホットデプロイ、JRebelなど)。すぐにJava EEアプリケーションを再デプロイ

私のプロジェクトはMavenプロジェクトで、Netbeansを使用して展開しています。このサイトでは、Spring、JSF、およびHibernateフレームワークを使用しています。

Netbeansでは、次のスクリーンショットにしたがって、Deploy on Deployが有効になっているようですが、pom.xmlから情報を取得すると主張しているため、クリック/クリック解除できません(ただし、 .xml(依存関係のみ))。 enter image description here

ここで、一部のファイルの変更はすぐに有効に見えます。これらを含める: - JSFファイル - 静的ファイル

を 次へ

変更は、展開が必要です: - 任意のXMLファイル を - 任意のプロパティは、 も、ローカライズのプロパティをファイルファイル - ものに

変更が私を必要とする任意のJavaファイルをを手作業でにデプロイしてください。現在、2〜3のクラス、基本的には1つのユーザークラスと承認クラスがあっても、再デプロイには0.5分かかります。このプロジェクトでは現時点でログインが可能ですが、コンパイルには数秒かかります。コンテナ(Glassfish)は約600 MBのRAMを消費し、いくつかの配備の後でPermGenエラーを出し、タスクマネージャを使用してJavaプロセスを終了する必要があります。 (これは、各再デプロイ後にガベージコレクタが漏れていることに関連していると私は読んでいます。プロファイルを生成するためにjhatを使用しましたが、何千ものクラス、クラス、Spring、Hibernateクラスなどのリストが表示されました)

jrebelについて聞いたことがありますが、実行しようとしましたが、Netbeansバージョン(7.0)と互換性がなく、実行されているように見えますが、Javaファイルの変更にはまだ再デプロイメントが必要です。

これらの問題を解決するためにできることはありますか、Java EEではJavaファイルを変更するたびに約1分待っているだけですか?この問題は生産性を著しく低下させます。アプリケーションをデプロイする際にここで

は私Glassfishの出力です:http://pastebin.com/7FhZ6AVh

答えて

5

私は信憑性も公式でもない情報源を見つけたが、あなたは私が発見した二つのことを指摘したいのですが何の答えを持っていないので。

最初は、NetBeansサイトのthis FAQで、Mavenプロジェクトの保存時にコンパイル時にコンパイルをオンにする方法を説明しています。この設定はデフォルトではオフで、テストではデフォルトでオンになっているようです。便宜上:

は、同様に、メインソースの実行のためにそれをオンにする、プロジェクトのプロパティ]ダイアログボックス、コンパイルパネルに移動します。

NetBeansがWebアプリケーションをデプロイする2つの異なる方法があるように思われます。最初の方法は、.warファイルを手動でサーバーに展開するのと同じように見えるインプレース展開です。 2番目はインクリメンタルデプロイメントです。インクリメンタルコンパイルのようなものであれば、アプリをホットデプロイしたときに変更されたファイルのみをデプロイすることになります。

プロジェクトのコンテキストメニューからRunまたはDeployをクリックすると、インプレースデプロイメントが既定の展開方法のようです。インクリメンタルデプロイメントは、プロジェクトが既にデプロイされていて、Runを再度クリックしたとき(またはRunツールバーボタンを使用)に発生します。

netbeans.orgのWebサイトにある公式の出版物ではありませんが、NetBeans FAQは、私が指摘したいのは、誰でもFAQを作成でき、情報は改訂なしで時代遅れになる可能性があります。

編集は:少し反射した後、私はいわゆる増分の展開は、それはそれは、増分展開を行い二回目はあなたRunアプリケーションということだけだ展開の異なる方法がないことを決めました。

編集:あなたがあなたのスクリーンショットで選択したRunパネルとは対照的に、上記の命令はCompileパネルにあなたを指していることに注意してください。ここでは、「保存時にコンパイル」私のために物事多くのことを遅らせ、私が発見した別の事Compileパネルがドロップダウンで、デフォルトはfor test execution only

0

であることfor both application and test executionを選択する必要があることを示す私のスクリーンショットですその後、デバッグモードでのみ表示されるNetbeansの[コード変更の適用]ボタンが表示されます。 (画像の右側にある緑のボタン)

これはJavaコードの変更を適用するのに便利です。それは毎回機能しませんが、変更がメソッドの追加でなく、Beanがリクエストスコープである場合、ほとんどの場合は機能します。私はこれが手動で保存するコンパイルを行うと思いますが、再デプロイよりも優れています。

Apply Code Changes

+0

"コード変更の適用"はホットスワップです。あなたがクラス署名を変更している場合は、動作しません。 – Daniel

2

JRebelは、NetBeans 7.0(http://plugins.netbeans.org/plugin/22254/jrebel-netbeans-plugin)と互換性があり、実際にはそこに任意のIDEと互換性があります。

1

これは、NetBeans 7.2.1とGlassFish 3.1.2にJRebelを設定して歩くのNetBeansチームからGeertjan Wielengaによって素晴らしいビデオです:

のNetBeans IDEにJRebelを開始する方法:http://www.youtube.com/watch?v=kveXKv2q4Ec

関連する問題