10

私は Java EE にまったく慣れていないので、展開プロセスの遅さに苦労しています。何か間違ったことをしているのではないかと思います。コードの変更がすぐに発生するDjangoの経験があり、Java EEアプリケーションのホットデプロイは少し混乱しているようです-ホットデプロイを主張するものが複数あります(Glassfish、Eclipse manic hotdeploy、Jetty hotdeploy、JRebelなど)。

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

Netbeans では、次のスクリーンショットによると、保存時にデプロイが有効になっているようですが、pom.xml から情報を取得すると主張しているため、クリック/クリック解除はできません (ただし、pom.xml にはそのようなフィールドはありません (のみ)依存関係)))。 ここに画像の説明を入力

現在、一部のファイルへの変更はすぐに有効になるようです。- JSF ファイル - 静的ファイル

以下の変更にはデプロイが必要です: - XML ファイル - プロパティ ファイル (ローカライズ プロパティ ファイルも含む) - Java ファイル

それらへの変更は手動でデプロイする必要があり、再デプロイには 30 分かかりますが、現在は基本的に単一のユーザー クラスと承認クラスの 2 ~ 3 クラスしかありません。このプロジェクトでは、現時点ではログインのみが許可されていますが、それにもかかわらず、コンパイルには数秒かかります。コンテナー (Glassfish) は約 600 MB の RAM を消費しているようで、数回のデプロイ後に PermGen エラーが発生し、タスク マネージャーを使用して Java プロセスを強制終了する必要があります。(これは、再デプロイするたびにガベージ コレクターがリークすることに関連していると読みました。jhat を使用してプロファイルを生成したこともありますが、数千のクラス、私のクラス、Spring、Hibernate クラスなどのリストが表示されました。)

jrebel についても聞いて実行してみましたが、私の Netbeans バージョン (7.0) と互換性がないようです。

これらの問題を解決するために私にできることはありますか、それとも Java EE では、Java ファイルを変更するたびに約 1 分間待つのが普通ですか? この問題により、生産性が大幅に低下します。

アプリケーションをデプロイするときの Glassfish の出力は次のとおりです: http://pastebin.com/7FhZ6AVh

4

4 に答える 4

5

信頼できる情報源も公式の情報源も見つかりませんでしたが、答えがないので、私が発見した 2 つのことを指摘したいと思います。

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

プロジェクト プロパティ ダイアログの [コンパイル] パネルに移動して、メイン ソースの実行に対してもオンにします。

2 つ目は、これを完全には理解していないことを強調しなければなりませんが、NetBeans が Web アプリケーションをデプロイする方法は 2 つあります。.war最初の方法は、ファイルをサーバーに手動で展開するのと同じように見えるインプレース展開です。2 つ目はインクリメンタル デプロイです。これがインクリメンタル コンパイルのようなものである場合、アプリがホット デプロイされるときに、変更されたファイルのみをデプロイすることを意味します。

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

netbeans.org の Web サイトにある NetBeans FAQ は公式の出版物ではありません。誰でも FAQ を作成することができ、その情報は改訂なしで陳腐化する可能性があり、また、その情報は陳腐化する可能性があります。

編集:少し考えた後、いわゆる増分展開は展開の別の方法ではなく、Runアプリケーションが2回目に増分展開を行うだけであると判断しました。

編集: 上記の説明は、スクリーンショットで選択しCompileたパネルではなく、パネルを指していることに注意してください。これは、パネルのドロップダウンでRun選択する必要があり、デフォルトがfor both application and test executionCompilefor test execution only

コンパイル パネルのドロップダウン

于 2011-10-20T19:40:50.673 に答える
2

JRebel は NetBeans 7.0 (http://plugins.netbeans.org/plugin/22254/jrebel-netbeans-plugin) と互換性があり、実際、あらゆる IDE と互換性があります。

于 2011-12-17T18:22:47.350 に答える
0

「保存時にコンパイル」は私にとって非常に遅くなりましたが、後でわかったもう1つのことは、デバッグモードでのみ表示されるNetbeansの「コード変更の適用」ボタンです。(写真右の緑のボタン)

これは、Java コードの変更を適用するのに役立ちます。毎回うまくいくわけではありませんが、変更がメソッドの追加ではなく、Bean がリクエスト スコープである場合は、ほとんどの場合うまくいくと思います。これは保存時にコンパイルを手動で行うことだと思いますが、再デプロイするよりはましです。

コードの変更を適用する

于 2011-11-15T16:23:45.397 に答える