Solaris8 OSのサーバにサーブレットアプリケーションを構築しています。
・/export/home/A
・/export/home/B
2環境のアプリケーションを構築しているのですが、
JavaのクラスやJSPが全く同じなため、B内の一部のフォルダから
A内の一部のフォルダにシンボリックリンクをはることによって、
リソースの節約をしようとしています。
画面関連のフォルダ構成は、
/export/home/A/docbase/jsp/menu.jsp
となっています。
しかし、ここでこのフォルダ構成で問題が起きました。
/export/home/B/docbase -> /export/home/A/docbase
上記のようにシンボリックリンクをはっていれば、問題ないのですが、
/export/home/B/docbase/jsp -> /export/home/A/docbase/jsp
というようにアプリケーションルートである「docbase」内の
jspフォルダに直接シンボリックリンクをはると、
HTTP 500 内部サーバーエラーが発生し、エラーログには
cannot process configuration web service using "/B /export/home/
B/docbase"
cannot load servlet name: jsp
java.lang.IllegalArgumentException:InputStream cannot be null
というメッセージが表示されます。
サーブレットコンテナの定義ファイル(.xml)には
<Context path="/B" docbase="/export/home/B/docbase" reloadable="false" />
というようにアプリケーションルートを指定しています。
JSP資産はどちらのはりかたでも共通なので、一見前者、後者どちらの
方法でも影響はなさそうなのですが、何か原因があるのでしょうか?
よろしくお願い致します。
docbaseの設定より上位階層を迂回する参照をしようとしてるからじゃないのかな?
ちょっと面倒だけど"/export/home/"でやって効くようならそういう事だと思うよ。
それができちゃうと他のユーザの階層のデータを勝手に覗けちゃう事になるしね。(それ以前に権限で阻まれるだろうけど)