※ ChatGPTを利用し、要約された質問です(原文:アプリ資産をシンボリックリンクで共有する問題について)
アプリ資産をシンボリックリンクで共有する問題について
このQ&Aのポイント
Solaris8 OSのサーバにサーブレットアプリケーションを構築しています。/export/home/Aと/export/home/Bの2環境でアプリケーションを構築しているのですが、リソースの節約のために一部のフォルダにシンボリックリンクをはることを試みました。しかし、アプリケーションルート内のjspフォルダに直接シンボリックリンクをはるとHTTP 500 内部サーバーエラーが発生し、どちらの方法でも影響がある原因があるようです。
Solaris8 OSのサーバにサーブレットアプリケーションを構築しています。/export/home/Aと/export/home/Bの2環境でアプリケーションを構築しているのですが、アプリケーションのリソースを節約するために一部のフォルダにシンボリックリンクをはりました。しかし、アプリケーションルート内のjspフォルダに直接シンボリックリンクをはるとHTTP 500 内部サーバーエラーが発生し、解決方法がわかりません。
質問者はSolaris8 OSのサーバにサーブレットアプリケーションを構築しています。アプリケーションのリソースを節約するために、一部のフォルダにシンボリックリンクをはることを試みました。しかし、アプリケーションルート内のjspフォルダに直接シンボリックリンクをはるとHTTP 500 内部サーバーエラーが発生します。原因がわからず困っているようです。
アプリ資産をシンボリックリンクで共有する問題について
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資産はどちらのはりかたでも共通なので、一見前者、後者どちらの
方法でも影響はなさそうなのですが、何か原因があるのでしょうか?
よろしくお願い致します。
お礼
※OSのバージョンに誤りがありました。 ※OSはSolaris9です。 docbaseより下位の階層を参照するルートは、やはりできないというとでしょうか? 担当者によると、Solaris8では実現できていたらしいのですが。。。 OSのバージョンアップによるシンボリックリンクの挙動の違い、ということも考えられるのでしょうか? ちなみに、/export/home/Aと/export/home/Bは同ユーザです。 (正しくディレクトリ構造を書くと、/export/home/X/Aと、/export/home/X/Bとなり、どちらもXユーザ権限の階層となっています)