2009-09-03 13 views
2

IBMはIBM製品を使用しており、通常はIBM Httpサーバー(Apacheを参照)をアプリケーション・サーバーのリバース・プロキシとして使用します。パフォーマンス上の理由から、私たちはhttpサーバから静的コンテンツ(.gif、.jpg、.css、.htmlなど)を提供し、アプリケーションサーバから少し負担を軽減します。Java EEアプリケーションでの静的コンテンツと動的コンテンツの分離

これまでのところ、httpサーバにファイルを配布し、手動で設定する必要がありました(せいぜいカスタムスクリプトを作成する必要があります)。問題は、特にアプリケーションを更新する必要があるときに、すべてを同期させる必要があります。

すべてのJava EE製品は、この「アウトオブボックス」をサポートしていますか?たとえば、マスターノードがアプリケーションを他のノードに配布し、すべてを同期状態に保つためのクラスタ構成のように、アプリケーションサーバーにこれを自動的に実行させる方法はありますか?

答えて

2

これまでのところ、我々はHTTPサーバにファイルを配布し、それを手動で設定する必要が

(最高でカスタムスクリプトを書きます。)

設定部分がわかりません。 JSPやサーブレットとは静的なコンテンツを区別するのがかなり簡単です(いったん終了してもそれほど変更されません)。

問題は、特にアプリケーションを更新する必要があるときに、すべてを同期させる必要があります。

自動化! Maven(またはAntですが、もう少し作業が必要です)、これを処理するWebプロジェクトから別々のアセンブリを作成するのは簡単です:Java EEノードのWAR、HTTPサーバーの静的コンテンツの圧縮。

Java EE製品は、この「アウトオブボックス」をサポートしていますか?

AFAIK、no。驚くべきことに、展開はJava EEの弱い領域です。しかし、MavenやControlTierのようなツールを使って、適切なレベルの自動化を実現することができます。

0

私はIBM製品に詳しいとは言えませんが、WARファイルの代わりにアプリケーション(大部分はWAR)をディレクトリとして展開し、ファイル自体にアクセスできるようにするのが一般的です。デプロイメントディレクトリをApacheのエイリアスにマップすると、そこから静的コンテンツを配信することができます。 WEB-INFディレクトリへのすべてのアクセスをブロックし、すべての要求をjspファイル(.jsp、.jsf、.do、.actionなど)にアプリケーションサーバーにルーティングする必要があることに注意してください。

WEB-INFブロッキング

は、次のディレクティブを使用して行われます:

<DirectoryMatch "(WEB-INF|META-INF)"> 
    Order allow,deny 
    Deny from all 
    AllowOverride None 
</DirectoryMatch> 
関連する問題