0

私はApacheを研究してきましたがcommons-daemon、それはかなりクールに思えます.基本的にはAPIであり、JARを基盤となるOSに登録してデーモンサービスのように開始および停止できるようにするライブラリでもあります. さらに、通常はアプリを強制終了する OS シグナルを傍受し、代わりに丁寧にシャットダウンする機会を提供します。

ビジネス ロジックを EJB 内にデプロイするか、OGS や JBoss などのコンテナーにラップするかを選択できる場合、ポートをリッスンしてクライアント リクエストに応答するデーモン JAR を作成しないのはなぜでしょうか?

アプリ コンテナーがすぐに提供するすべての機能/サービス (セキュリティ、ログなど) のメリットだけですか? それとも、アプリ コンテナー/EJB ソリューションよりもデーモンを選択する方が有利な場合がありますか?

基本的に、私が尋ねているのは、アプリ コンテナー/EJB ソリューションを使用するのがより適切なのはいつでcommons-daemon、システム レベルのサービス (Java で) を構築するために使用するのがより適切なのはいつですか?

免責事項: これら 2 つの選択肢に興味があるだけですが、他のソリューション (Web コンテナー、ESB、OSGi など) が存在することは承知しています。しかし、この質問の目的のために、アプリ コンテナーまたはデーモン ソリューションの間の理由を聞くことにのみ関心があります。前もって感謝します!

4

2 に答える 2

0

簡単な答えはイエスです。アプリ サーバー (Glassfish または JBoss) は、プレーンな Java SE アプリで自分で実装またはセットアップする必要がある優れた機能をたくさん提供します。

ただし、これは白黒ではなく、アプリケーション サーバーの優れた機能の多くをわずかな労力で得ることができます。私はまさにこのトピックに関するブログ シリーズを執筆中です。

アプリ サーバーを使用しない理由は、広く配布されているソフトウェア製品のプロジェクトがあり、何千ものアプリケーション サーバー インスタンスにパッチを適用して維持する必要がないようにしたかったからです。

ただし、アプリを 1 か所で実行する場合は、Java SE を使用する理由はほとんどありません。

于 2012-07-02T10:51:39.883 に答える
0

Why don't you look at it like System level (daemon) vs Application level (in container)?

This will give more or less clear distinction (especially if worked with Linux some time).

For Daemon:

  • has its own life cycle (you can start and stop it separately);
  • different privileges (could be run under different user);
  • use case is something like CRON, MailServer, synchronization and any system-level service.

For Container:

  • managed app (by some privileged user via Container console);
  • plenty of out-of-the-box features (which you'd already mentioned);
  • use case some general case business application.
于 2012-07-02T15:53:11.873 に答える