2012-09-18 16 views
5

Java EE Webアプリケーションの展開モデルに関する質問があります。現在、WebアプリケーションをTomcat 6のWARファイルとしてデプロイしています。すべてのコンテンツは、イメージ、静的なHTMLページなどの静的コンテンツを含むWARファイルでパッケージ化されています。しかし、私はこれらの静的コンテンツをHTTPサーバーにデプロイし、アプリケーションサーバーを動的コンテンツの取得にのみ使用したいと考えています。どのようにこれらのものを分割するのですか?誰もこの種のことをしていて、自分のシナリオに適した展開モデルを持っていますか?ヘルプは高く評価されます。java Webアプリケーションでhttpサーバーとアプリケーションサーバーの両方を使用する方法

2つのWARファイルを静的コンテンツのみで作成し、そのWARをHTTPサーバーに展開し、残りを別のWARファイルとして展開してアプリケーションサーバーに展開することをお勧めしますか?しかし、このアプローチは、静的コンテンツが現在参照されているすべてのページに影響を与え、プロジェクトが巨大でコードベースが非常に大きいため、コード変更が非常に面倒です。

あらゆる戦略やアイデアを歓迎します。

+0

なぜ静的コンテンツと動的コンテンツを分割したいのですか?それは組織的な配慮ですか、あるいはパフォーマンスを改善したいですか? –

+0

コメントをいただきありがとうございます。皆様のコメントをいただきありがとうございます。私のための良い学習曲線。 Webアプリケーションのパフォーマンスを向上させるために、HTTPサーバーとアプリケーションサーバーの両方を使用したいと考えています。私は「Java™Webサイトのパフォーマンス分析」という本をしばらく読んでいます。私の静的なコンテンツをHTTPサーバーに、動的なコンテンツをアプリケーションサーバーに配置することをお勧めします。しかし、私はそれを実際に行う方法を知らない。私が知っているのは、展開のために使用しているAppサーバーであるTomcatにWARファイルを作成して展開する方法です。 –

+0

私の質問は以下のように変更することができます。 静的コンテンツをHTTPサーバーに配置するにはどうすればよいですか?私はこれについていくつかの助けを得たら、私は先に進み、WARファイルからすべての静的コンテンツを削除し、それをHTTPサーバーとアプリケーションサーバーのWAR内のファイルの残りに展開できます。 –

答えて

1

これは、パフォーマンス上の理由から面白いことかもしれません。

これを行うには、展開スクリプト/展開ファイルを別に用意する必要があります。 1つのプロジェクトに複数のファイル/ WAR /フォルダ/スクリプトを展開することは問題になりません。 WARをデプロイしてデータベースを更新する必要があるときも同じことが言えます。

WARファイルと、静的コンテンツを展開するフォルダがあります。


編集

HTTPサーバの静的コンテンツを展開するサーバーに依存します。 ApacheをLinuxサーバーで使用する場合は、Virtual Hostを設定する必要があります。この例では

<VirtualHost *:80> 
    # This first-listed virtual host is also the default for *:80 
    ServerName www.example.com 
    DocumentRoot /www/domain 
</VirtualHost> 

、あなたは、任意のIPアドレスに対して、サーバ名www.example.comため、80ポートでリッスンする仮想ホストを持っています。その後、これは/www/domainパスにリダイレクトされます。

さらに多くの例と設定オプションがドキュメントにあります。

+0

静的コンテンツをHTTPサーバーにどのように配備しますか?私はこれについていくつかの助けを得たら、私は先に進み、WARファイルからすべての静的コンテンツを削除し、それをHTTPサーバーとアプリケーションサーバーのWAR内のファイルの残りに展開できます。 –

0

ファイルをHTTPサーバーに展開することはできません。 A WARJava Webアプリケーションで使用されている場合は、アプリケーションサーバーまたはサーブレットコンテナに展開する必要があります(Tomcatなど)。別のWebアプリケーションで静的コンテンツを分離することをお勧めしません。これは、それが一つのウェブアプリケーションであるべき一つのプロジェクトであれば、ほか:

WARファイルには、特殊なフォルダ構造を持っており、特殊なファイルにJSPページ、Javaサーブレット、Javaクラス、HTMLページなどに加えて が含まれています これらを組み合わせることでWebアプリケーションが形成されます。

静的コンテンツを1つのアプリケーションに保持することはできますが、実際には何も悪いことはありません。

プロジェクトが非常に大きく、ファイルがたくさんある場合は、問題のないようなプロジェクト構造を使用するだけで、理解しやすく読みやすいようにして、アプリケーションサーバーまたはサーブレットコンテナが注意を払う必要がありますそこにある多くのコンテンツを展開します。

+0

あなたの入力を感謝します。しかし、私の要件は、Webアプリケーションのパフォーマンスを向上させるために静的コンテンツをHTTPサーバーにデプロイすることです。私は、HTTPサーバーに静的コンテンツをバンドルしてデプロイする方法がわからず、TomcatコンテナーにデプロイされたWARファイル内のJSPからアクセスします。これに関するどんな助けも素晴らしいでしょう... –

0

バージョン4までは、静的コンテンツの配信が非常に遅いです。このため、動的コンテンツを静的コンテンツから分離し、通常のWebサーバー(2002年に発行された本...)を使用して動的コンテンツを提供することが頻繁に推奨されたのはこのためです。最近のTomcatのバージョンはこの問題に直面しません。したがって、IMHOは分割を控えることができます。これは、組織とセキュリティの両方にとって悪夢となる可能性があります。

静的リソースの場合は、適切なキャッシングの設定に重点を置く可能性があるため、必要以上に転送されることはありません。

+0

うんキャッシングは私が見たいと思っていたもう一つの領域です。実際には、頻繁に使用されるマスターテーブル関連のクエリとそれらのためのいくつかのキャッシングアプローチを探し始めました。 1つのアプローチは、Webアプリケーションの起動時にこれらのクエリの結果をメモリにロードして使用することです。 1つの問題は、マスターテーブルのデータが変更されたときにメモリ内のデータをリフレッシュすることです...しかし、このキャッシュの問題を個別に検討します...ちょうどそのアスペクトを調べていることを共有したい... –

+0

db別の問題です。つまり、Webサーバーの静的リソース用のキャッシュヘッダーを設定していたため、ブラウザーは一度しか取得しませんでした。 –

関連する問題