2011-10-18 11 views
0

リクエストに応じてデータを切り取ってイメージを生成するJavaサーブレットがあります。潜在的には何百万もの画像があり、一度生産すると再レンダリングする必要がないので、それらをキャッシュしてレンダリングのステップを避けたいのはかなり面倒です。Java Webサーバーから外部ファイルをリンクする

私はキャッシュが正常に動作していますが、Webアプリケーションのデプロイメント間にこれらのレンダリングされたイメージが残っている必要があります。つまり、ドキュメントベースに書き込むことができないか、再デプロイ時に破棄されます。

私がやってきたことは、Webアプリケーションがwarファイル(コンテキストはMETA-INF/context.xmlにあります)としてデプロイされているため、Contextの 'allowLinking'属性を使用しています。これは、アプリケーションがアンデプロイされる前にシンボリックリンクを解除する必要があるので、やや面倒です。そうしないと、リンク内のイメージは破棄されますが、動作するようです。

しかし、これはTomcatでのみ機能し、JBoss(5.1)でテストする場合、シンボリックリンクを尊重しているようではなく、ドキュメントベース以外のものにリンクすることはできません。私は、これを実現するためのより現実的な方法がすべてのJava Webサーバーで機能する必要があると考えています。私は何が欠けていますか?

答えて

2

外部ディレクトリからイメージを提供するサーブレットを構成するだけで済みます。このサーブレットは、要求から画像ファイル名またはIDを抽出し、外部ディレクトリからファイルを読み取り、サーブレット応答の出力ストリーム(応答に適切なコンテンツタイプが設定されている)にバイトを書き込むだけです。

または、外部のディレクトリから静的イメージを提供するApacheのhttpdサーバーのフロントエンドを追加し、他のURLのサーブレットコンテナに委任できます。

+0

最初は良いアイデアです。本質的にデフォルトのサーブレットを書き直しました。キャッシュから配信するか、要求に応じてレンダリングするために同じURLが必要なので、2番目の方法は難しいでしょう。私がより良い解決策を得られないなら、私はあなたを受け入れられる答えとしてマークします。 – rjcarr

+0

私はここであなたの提案を受けました。「外部ディレクトリからイメージを提供するサーブレットを構成するだけでよい」と私は自分のソリューションに使用しています。提案に感謝し、リンクを扱うよりはるかに良い! – rjcarr

関連する問題