2012-03-04 19 views
6

Netbeansを使用してWebアプリケーションを作成しました。私がnetbeansとtomcatサーバー(zip)を介してWebアプリケーションを実行する前に、私の外部ファイル(アップロードされたファイルや私のアプリケーション用に使用されるその他のヘルパーファイル)はbinディレクトリに保存されていました。Tomcatはどこにファイルを保存しますか?

ここでは、専用のサーバーにプロジェクトを展開する方法を知りたいので、Windowsインストーラを使用してApache Tomcatサービスをインストールしようとしました。私は、tomcatのdeployユーティリティを使用してwarファイルを正常にデプロイしました。しかし、私はapache tomcat windowsサービスを介してプロジェクトを実行すると、それはbinディレクトリにファイルを保存していないと私はbin dirに貼り付けた私のファイルを読むことができません。

どこにファイルを置く必要がありますか?

編集:tomcatサービスディレクトリを見て、私はそれがルートに格納されていることがわかりました。私がtomcatを 'E:\ Apache \ services \ tomcat \'にインストールした場合、 'tomcat'ディレクトリに保存されます。 Apacheをインストールすると

答えて

4

、プロジェクトがWebアプリケーションフォルダ内にある必要があります:ディレクトリ構造はこのようなものであるように、私のプロジェクトと同様に

C:\Apache\tomcat\webapps 

はgaganisonlineです:

パス:C:\Apache\tomcat\webapps\gaganisonline

      gaganisonline 
          |   | 
         WEB-INF  index.html 
          | 
       --------------------------- 
       |   |  |  | 
      web.xml src lib classes 
+0

ええ、私のプロジェクトがwebappsディレクトリにあることはわかっています。しかし、私はWebアプリケーションの実行中にTomcatサーバーがファイルを書き込んで保存できる場所を知りたがっていました。とにかくありがとう。 – braindead

+0

ここで、ROOTフォルダーはTomcatのルートです。表示される最初のページindex.jspは、そのフォルダにあります。 Tomcatが書いているファイルのうち、どのような種類のファイルを保存すると思いますか? –

5

最終的には、ファイルの格納場所を決定するのはアプリケーションによって決まります。

あなたのアプリケーションは、JVMの現在のディレクトリにファイルを格納しています。このファイルはNetBeans経由でWebサーバーを起動するときに "bin"ディレクトリに格納されます。そうであれば、TomcatがWindowsサービスとして起動されたときに現在のディレクトリが何であれ、それらを見つけることができます。

率直に言えば、これは間違っていると思います。アップロードされたファイルに保存されていることを意識して決定し、使用しているアップロードメカニズムがそれらをそこに置くことを確認する必要があります。

明らかに、現在のディレクトリにそれらを入れるのは悪い考えです。 Webコンテナの起動方法によっては、別の場所に格納する必要はありません。そして明らかに "bin"ディレクトリは不適切な場所です。だからここでファイルを置くべきである


を(ユーザーが、名前が?「ビン」に住んでいるスクリプトのいずれかに一致するファイルをアップロードしようとした場合はどうなりますか)? Tomcatは従来、コンパイル済みのJSPなどの一時ファイルを置く場所ですworkディレクトリのサブディレクトリ...で

  • :私の意見では

    は、次の3つの選択肢を持っています。

  • Tomcatインストールディレクトリのカスタムサブディレクトリにあります。

  • ファイルシステム内の別のディレクトリにあります。

あなたはWebアプリケーションを再デプロイする際のファイルは通常、そこに吹き飛ばされているので、webappディレクトリに、その後落下、ウェブアプリケーションの妨げになるファイルをアップロード大きなリスクがありますので、すべきではありません。

干渉の危険があるため、ビンやログ、libディレクトリ、configディレクトリにそれらをドロップしてはいけません。また、論理的な場所ではないためです。


あなたがTomcatのインストールディレクトリのルートからの相対ファイルを書き込みたい場合は、それがSystem.getProperty("catalina.base")を呼び出しているかを調べることができます。

これまで何をしていたのですが、間違った場所にファイルを誤ってまたは意図的にアップロードできないようにする必要があります。絶対パス名、または "../../...."を使用するパス名を指定することで、アップロード領域から逃げることができます。

+0

"name"が 'bin'にあるスクリプトと一致する場合、私は' bin'内の一つのディレクトリに保存するので、少し安全です。とにかく、私はビン以外の別のディレクトリにそれを保管することについて助言を受けたい。私の問題は今それを行う方法です?私は 'C:\ Apache \ tomcat \ file.txt'のような厳密なファイルパスを使うのが好きではありません。私は通常、相対パスを使用します。この問題を回避する方法はありますか?正確なファイルパスを使用する必要がありますか? webappからファイルにアクセスすると、私のルートディレクトリとは何ですか? – braindead

+0

更新された回答を表示... –

関連する問題