1

標準的な練習用の質問の詳細:

  1. アプリをEARとWARとしてデプロイすることに違いはありますか?どうやって決めるの?(WARは単なるWebアプリケーションであり、メッセージングなどのJava EE機能を備えている場合と備えていない場合があります)
  2. Hibernate(MySQL DB)を備えたSpring MVCアプリケーションスタックがあるとしましょう。これはWarまたはEARとしてデプロイする必要がありますか?
  3. EJBを使用していない場合、JBossデプロイメント記述子について心配する必要があるのはいつですか。(ちょうど春のMVC)。私もJMSを持っているとしましょう。他のJBoss関連の設定ファイルを設定/更新/作成する必要がありますか?
  4. アプリケーションEAR/WARをパッケージ化すると、アプリに必要なすべてのものが含まれます。このアーカイブの外にあるconfig/xmlファイルを指定されたJBossフォルダーに保持する必要があるシナリオはありますか?
  5. Eclipseから直接デプロイするのが一般的ですか、それともAntなどを使用する方が良いですか?有利不利?

明らかに、私は初心者です:-)。これを理解しようとしています。

4

2 に答える 2

1

1. これは必ずしも簡単な決定ではありませんが、初心者や小さなプロジェクトにとっては、ほぼ常に WAR であると言えます。EAR を使用する主な理由は、ビジネス層を UI/Web 層から分離することです。詳細については、この質問を参照してください: Java EE アプリケーションの論理レイヤーを分離するにはどうすればよいですか?

2. 間違っているかもしれませんが、Spring の人は一般的に WAR を好むと思います。

3. JBoss (ベンダー) 固有のデプロイメント記述子は、いわゆる「管理対象オブジェクト」とセキュリティを構成するために必要です。場合によっては、Java EE 仕様でカバーされていない追加機能 (WAR の Web ルートの設定など) に使用できます。管理対象オブジェクトは通常、データ ソース (データベースへの接続) と JMS 宛先 (キューとトピック) です。

従来の Java EE アプローチでは、これらはコードからできるだけ離れた場所に作成する必要があり、これは通常、システム管理者が何らかの GUI または管理コンソールを使用してターゲット AS 内に作成することを意味します。この設定では、開発者は壁を越えて「未解決の依存関係」を持つ WAR をスローし、システム管理者 (または「デプロイヤー」) はそれらの未解決の依存関係がどうあるべきかを理解するために何日も費やします。

開発者とデプロイ担当者の間のコミュニケーションが比較的良好である場合、WAR または EAR が readme ファイルと一緒に壁を越えて投げ出される可能性があります。これにより、少なくともどのリソースが必要かについての洞察が得られます。組織によっては、開発チームは、これらの「未解決の依存関係」がどのように解決されたかについて、アクセスやフィードバックを得られない場合があります。たとえば、最大 5 つの接続を持つデータ ソースが作成された可能性がありますが、一部のコードで 10 個の並列クエリが指定されている場合、これでは不十分な場合があります。開発チームが正確なデータ ソース構成を把握していないと、実行時の問題やパフォーマンスの問題のクラスによっては、解決が比較的難しい場合があります。

これらの問題を軽減するために、一部のベンダーは、一部のアーティファクトについて、WAR または EAR に組み込まれる独自のデプロイメント記述子を使用する代わりに、開発者にこれらの「未解決の依存関係」を作成することを提案しています。単純なローカル JMS 宛先の場合は、ほとんどの場合これで終わりですが、データ ソースの場合はもう少し続きます。つまり、開発、ベータ、QA、本番などのさまざまな段階でデータ ソースを切り替えるメカニズムが必要です。さらに、ソース コードに本番パスワードを含めることはほとんどありません。

ローカルで試してみたい単純なアプリがある場合、ステージと運用パスワードは問題になりません。(大)企業に展開する場合はそうです。

Java EE 6 では、標準記述子 (web.xml、ejb-jar.xml、または application.xml) を使用してデータ ソースを定義できます。Java EE 7 では、JMS 宛先に対して同じことができます。ステージに基づいてそれらを構成する標準的な方法はありませんが、Java EE 8 がこれに対処するというかすかな希望があります (たとえばJAVAEE_SPEC-19を参照)。ベンダーは、これらの標準化された方法に普遍的に満足しているわけではありません。ベンダーの主要なドキュメントは、ほとんどの場合、独自のツールと記述子を使用してこれらのことを行う方法を拡張的に説明しています。場合によっては、それを軽視したり、本番環境での使用は推奨されていないと言って怖がらせたりすることもあります)。

4. 主に 3 への回答を参照してください。ステージ間を切り替えて本番パスワードをWAR / EARから除外する方法の問題を解決する1つのオプションは、AS内(この場合はJBoss内)で上記のデータソースの完全な定義を持つことです。このセットアップでは、すべての AS インストールが特定のサーバーに関連付けられています。データ ソースを更新、削除、または新しいものを追加する必要がある場合は、運用チーム (存在する場合) と連絡を取る必要があります。前述のように、組織によっては、これは些細なことから実質的に不可能なことまでさまざまです。

5. 開発時には、ほとんどの場合、IDE を使用して展開を行います。本番環境では、決してそれを行うことはありません。本番環境では、Ant (または Maven) でビルドし、Jenkins や Chef などを介してデプロイできます。

于 2013-03-05T20:59:05.150 に答える
1
  1. ここをチェックしてください: .war と .ear ファイル
  2. 前の回答を読めば、それは「WAR」だと思います。
  3. JBoss のモジュールを管理するにはデプロイメント記述子が必要です。競合がない場合や微調整が必​​要ない場合は、デプロイメント記述子は必要ありません。
  4. JBoss にモジュールを追加したり、データソースを構成したりする場合は、JBoss ファイルをいじる必要があるかもしれません。詳細については、JBoss のドキュメントを参照してください。
  5. 開発段階で Eclipse からデプロイできますが、他の環境 (認定、実稼働、テストなど) は開発中の環境から分離する必要があり、それらには Eclipse がインストールされないため、管理に慣れる必要があります。コマンドラインからサーバーを開き、戦争を適切なディレクトリにドロップします。

短い回答ですが、お役に立てれば幸いです。

詳細については、JBoss のドキュメントを参照してください。

于 2013-03-05T20:32:39.263 に答える