質問: Windows用のtomcatの起動に関してですが、 大まかにわけるとGUIからの起動(tomcat8ならtomcat8w.exe)とstartup.batによる起動があると思います。 ですが、batから起動したものの場合、warファイルの展開やworkディレクトリの生成が行われません。 これは設定で変えることが可能なのでしょうか? また配備するWebアプリケーションがネットワークディレクトリにアクセスするものである場合、 startup.batからの起動であればアクセスが可能で、tomcat8w.exeからの起動ではアクセスができません。 ユーザ権限によるもの?かは不明なのですが、GUIツールの方からでもアクセスする方法はありますでしょうか? ローカルシステムアカウントはAdminになっています。 加筆 windows7 64bit tomcat8 java8 詳細を説明すると、ネットワークドライブの割り当てを行い(ここではXドライブとします)、おっしゃる通りJAVAのFile,FileInputStreamクラスで読み込みを行いますが、GUIツールからの起動では読み込めません。 またcontext.xmlにXドライブに対してエイリアスを設定しているのですが、GUIツール起動だとエラーをだしてしまいデプロイが正常に行われません。 そもそもバッチの方だとwarファイル、workフォルダの展開が行われないのが疑問です。
回答: まず先に、ちょっとご指摘させてください。 GUIツールでの起動というのはちょっと分かりにくいかもしれません。 これはWindowsのサービスとして起動することを指しているんですよね? おそらく「サービス」で起動・停止の操作をするのと同じで、この問題はそのサービスからの起動であることがポイントになっていると思います。 なので、「サービスとして起動」という表現にしたほうが、話が伝わりやすいと思いますよ。 以降はGUIツールの起動は、「サービスとして起動」と同じものとして話を進めます。 ... ほぼ同じ環境(Windows7 64bit、JDK8u66、Tomcat-8.0.32)で確認した結果をお知らせします。 > > batから起動したものの場合、warファイルの展開やworkディレクトリの生成が行われません。 > > > こちらについては、再現ができませんでした。 どちらの場合でも、warファイルの展開やworkディレクトリの生成は行われています。 可能性としては、Tomcatフォルダーとそのサブフォルダーに対して、ログインユーザーでのファイル/フォルダー作成権限が無いのではないでしょうか。 サービスの実行ユーザーは権限があるので普通に作れるのかも知れません。 ※"startup.bat"はログインユーザー権限で実行されています。 > > 配備するWebアプリケーションがネットワークディレクトリにアクセスするものである場合、 > > startup.batからの起動であればアクセスが可能で、tomcat8w.exeからの起動ではアクセスができません。 > > > こちらについては、再現しました。実行ユーザーの(セッションの?)違いによるものでしょう。 サービスの実行ユーザーは、ログインユーザーとは異なる認証状態を持っていますので、サービスを実行しているユーザーが、自らネットワークドライブに接続する(`net use`のようなことをする)必要があります。 ただ、それをするにはちょっと面倒な手続きが必要なようです。 (JCIFSというライブラリーを使うのが一般的なようです。) 詳しくは、下記の記事を参照してください。 Windows ファイル共有をJavaから利用する - グロブ