仕事の関係上、WebLogicのServletから、ディレクトリ指定無しでファイルを書き込んだとき、そのファイルはどこに作成されるのか調べる必要が発生した。
取り急ぎ実験用のServletを組み、実際にどこに出力されるのか確認してみる。
PrintWriter fout = null; try { fout = new PrintWriter(new FileWriter("abc.txt", true)); fout.println("aaaaa" + System.currentTimeMillis()); } catch(Exception e) { e.printStackTrace(out); } finally { try { fout.close(); } catch(Exception e) {} }
実験してみたところ、どうやらいわゆる$DOMAIN_HOMEに出力されているようである。特に意識せずインストールした場合は、/opt/bea/user_projects/domains/(ドメイン名)/以下、といったところか。
実際問題、起動スクリプトを叩いたのはWebLogicを実行可能なユーザーのホームディレクトリ上であるが、作成されたのはDOMAIN_HOMEである。
これは、$DOMAIN_HOME/bin/setDomainEnv.sh(cmd)で
Win: pushd %LONG_DOMAIN_HOME% Unix: pushd ${LONG_DOMAIN_HOME}
として実装されている。・・・ご丁寧に、Win/Unix共にシェルスクリプト内でpushd/popdが独自実装されている。非常に興味深い。
以上より、特にsetDomainEnv.shを弄っていない限り、ディレクトリ指定無しのカレントディレクトリは$DOMAIN_HOMEとなる事が分かった。・・・当然、$DOMAIN_HOMEにはロックファイルの作成権限があるため、すくなくともカレントディレクトリ(=$DOMAIN_HOME)自体には書き込み権限があるということになる。
コメント