2010-12-28 5 views
3

エンドユーザ向けにできるだけシンプルにインストールする必要があるアプリケーションを開発しています。エンドユーザーは経験豊富なLinuxユーザー(またはセールスエンジニア)ですが、Tomcat、Jettyなどについては実際には分かっていません。Webコンテナ、Webコンテナ、埋め込みWebコンテナに展開する

だから私は、私たちのアプリケーションを展開するための3つの方法を参照してください。私はこれがWebインターフェイスを持っていなければならなかった最初のアプリだと述べるべきだ。だから前にこの質問に本当に直面していない。

まず、既存のWebコンテナにアプリケーションをデプロイすることです。 SuseやRedHatにしか展開しないので、これはやりやすいほど簡単です。しかし、私たちは、1つのWebコンテナで複数のアプリケーションを実行しているという考えではありません。 1つのアプリだけを削除するのが難しくなります。

次のオプションは、TomcatまたはJettyをバンドルして、バンドルされたWebコンテナを起動/停止スクリプトで起動することです。

あるいは第三は、。これはおそらく第二の選択肢と同じユーザーエクスペリエンスを提供します埋め込みます。

私はこの問題に直面したときに、他の人がエンドユーザーにできるだけ愚かでない証拠にするために何をしているのか不思議です。

私は、アプリケーションリソースの制限とCPUの親和性を設定することが多いため、既存のWebコンテナに導入することをほとんど排除しました。これは、Webコンテナ/アプリケーションサーバーにデプロイされたすべてのアプリケーション応用。

ありがとうございます。

+0

回答ありがとうございます。バンドル(または場合によっては埋め込み)が進んでいく方法です。 – Jason

答えて

3

複数のwarファイル(または完全なJava EEアプリケーションサーバーの場合はearファイル)を展開することは、かつては約束だったが、実際にはうまくいかなかった。

の大きな問題は、大きな進歩にもかかわらず、耳のWARのホットリロードが問題ままであることです。メモリリーク、リソースリーク、クラスローダの問題...これらは常に起こっています。再配布の最も安全な方法は、サーブレットコンテナまたはアプリケーションサーバー全体を再起動することですが、これによって実行される他のすべてのアプリケーションも削除されます。

複数のアプリケーションを1つのASにデプロイする場合の2番目の問題は、それらのアプリケーション間の分離が薄いことです。アプリケーションは、他のアプリケーションからJNDI内のリソースにアクセスできます。これは、協力しているアプリケーションにとっては問題ではないかもしれませんが、お互いに敵対する可能性のあるアプリにとっては本当に問題になります。一般に

、サーブレットコンテナは、オペレーティング・システムを隔離、したがってマルチタスクの代替ではありません。

Xenのような安価で効率的な仮想化製品が提供されているため、サーブレットコンテナごとに1つのアプリケーション(実際にはバンドル)を用意し、これらをXenクライアントにデプロイする方が良いと思われます。

これは、アプリケーションが依存するライブラリをアップグレードするための簡単なパスを提供するという利点があります。展開プラットフォームとしてTomcat 6の固定インストールを考えた場合、単一のアプリケーションはTomcat 7からServlet 3.0にアップグレードすることはできません。これは、同じTomcat上で実行されている他のすべてのアプリケーションに影響するためです。これは、JBoss ASのような完全なJava EEスタックでは、より多くのライブラリがバンドルされるため、さらに重要です。

実際には、複数のアプリケーションを実行する固定Tomcatでは、Tomcatが提供する新しいライブラリ/ apiを利用するためにアプリをアップグレードすることはできません。何らかの理由で、他のものはアップグレードできません。これは非常に迅速に悪夢に陥る。

+0

あなたが欠点として言及する理由の多くは、状況によっては利点かもしれません。 100%の分離を望むなら、あなたの言うことは真ですが、多くの場合、目的は意図的に分かち合うことです。 – GreenieMeanie

+0

はい、本当に個々のアプリケーションではなく、もっと協力しているアプリケーションモジュール*のような「アプリケーション」があれば、実際にはリソースを共有したいと思うかもしれません。ある方法では、複数のEARまたはWARを展開する機能は、単一のアプリで余分なレイヤーとして認識されます。 –

+0

同じハードウェア上に複数のJVMをホスティングするための最小フットプリントとして何をお勧めしますか? –

1

は、それが既存のWebコンテナに配備されるか、または単に「hudson.war -jar javaの」で実行するHudson build engine.

を見てください。 Windowsの場合、管理者権限で実行すると、サービスとして登録することができます。

これは正確にこの用法のために設計されたWinstone servlet containerでこれを行います。

0

私の意見では、サーブレットコンテナ(TomcatまたはJetty)とともにWebアプリケーションを配布することは珍しいことではないと思います。あなたが得られるのは、Webアプリケーションの設定を完全に制御できることです。エンドユーザは設定の詳細を気にしません。しかし、欠点の1つは、インストールパッケージのサイズの増加である。

関連する問題