以下のような形で取得したコンテキストの下に、アップロードしたファイルにブラウザからアクセスできるようにするために、ファイルを保存するようにしています。
String path = getServletContext().getRealPath("files");
Webアプリケーションの更新を行うときに、Tomcat Webアプリケーションマネージャを使ってアプリケーションの「配備解除」をした後に、「WARファイルの配備」で更新したwarファイルを置いているのですが、その際に、アップロードしたファイルが全て消えてしまいします。
warファイルを更新するたびにアップロードしたファイルが消えては困るのですが、どのように対処すればいいのでしょうか?
データベースにアップロードしたファイルを保存することを検討していますが、他に方法がありましたらご教授ください。
よろしくお願いします。
アップロードしたファイルの保存場所をサーブレットの外に置けば大丈夫だと思います。
回答ありがとうございます。
サーブレットの外というのはコンテキストの外という意味でしょうか。
外に置くと、そのままだとブラウザからアクセスが出来なくなってしまいますので、ファイルを読みに行く処理を実装する必要がありますので、少し面倒かと思っています。
あるいは、アップロードしたファイルを保存する専用のコンテキストを作るという案を今思いつきましたが、そういう方法もありでしょうか。
ブラウザから直接ブラウズしたいということなら、mod_aliasを使ってアップロードしたファイルの保存場所を公開することもできます。
再度の回答ありがとうございます。
Apacheを使うのが前提であれば、mod_aliasを使うのが簡単そうですね。
私の今回の環境だと、
<Location />
ProxyPass ajp://localhost:8009/
</Location>
としてしまっているので、
Alias /upload "/upload"
<Location /upload>
ProxyPass !
</Location>
のようにしてやる必要がありました。
やっぱりバックアップを取るしかないですかねえ。
回答ありがとうございました。