0

ユーザーがローカルユーザーデータをアップロードし、アップロードされたデータからHTMLレポートを生成できるシンプルなWebアプリケーションがあります。HTMLが生成されたら、レポートへのリンクを表示します。このリンクをクリックしてブラウザで表示したり、他のユーザーとリンクを共有したりできます。

問題は、現在「/ Upload」フォルダを「WEB-INF」フォルダに配置していることです。これは、そのフォルダデータに外部からアクセスできるようにしたくないためです。次に、Webアプリケーションのルートディレクトリに「Reports」フォルダを配置します。これは、WARファイルをサーバーにデプロイし、ユーザーがファイルをアップロードしてから、HTMLレポートの生成を要求できるという点で問題なく機能します。問題は、WARファイルでソフトウェアアップデートを送信すると、/Uploadフォルダーと/Reportsフォルダーを含む/MyWebAppディレクトリ内のすべてのユーザーが削除されることです。したがって、ユーザーはデータを再アップロードする必要があり、「/Reports」フォルダーにある既存のレポートをすべて失います。

今、私はこの議論でStackOverflowの/Uploadフォルダーの答えを見つけました。 Tomcatでサイトをデプロイ/アンデプロイするときにそのフォルダーが影響を受けないように、アップロードフォルダーをどこに配置できますか?

しかし、「/ Reports」フォルダをどこに置くかはまだわかりませんか?Tomcatサーバーがリンクとして提供するために、現在行っているようにWebアプリケーションコンテキストディレクトリに配置する必要があると思いました(例:http ://example.com/MyWebApp/Reports/report01.html )。

もう1つ注意すべき点は、このアプリケーションはApache Tomcatでのみ実行されており、Apacheサーバーを経由するリクエストはありません。Tomcatを使用してユーザーのローカルサーバーで実行することにしました。これは、両方を一緒に動作するように展開して構成するよりも、展開する方が簡単なように思われるためです。また、サーバーサイトごとにこのアプリケーションを使用しているのは2〜3人だけであり、その負荷でTomcatはすべてを独自に処理する素晴らしい仕事をしているようです。それで、おそらくそれが解決策をより難しくしているのでしょうか?

このためのベストプラクティスを備えたhepをいただければ幸いです。

4

1 に答える 1

0

アップロードされたファイルをディスクに配置するために使用した戦略と、レポートをディスクに配置するために使用した戦略に違いはありません。どちらも、展開中にWebアプリによって生成されたファイルであり(クライアントがファイルをアップロードしたという事実を忘れてください)、同じように保護されます。

Tomcat 7にアップグレードする場合は、新しい<Context>属性がありaliasesます。これにより、Webアプリケーションはそのディレクトリからコンテンツを提供できますが、Webアプリケーションがアンデプロイされたときにコンテンツを削除することはできません。

于 2012-06-11T20:39:59.650 に答える