Web アプリケーションの context.xml でdocBase属性への相対パスを設定する方法はありますか?
コンピューター間でコンテキスト構成を共有し、アプリを war ファイルではなくディレクトリに配置できるようにしたいと考えています。そうすれば、クラスをそのディレクトリ (プロジェクト開発ディレクトリ内) に直接コンパイルし、Tomcat でこれらのクラスをコピー/パッケージ化せずに使用できます。
Tomcat 8.0.0-RC5 を使用しています。私のディレクトリのレイアウトは次のとおりです。
/home/david/projects/frontend/web-content <-- the static html files
/home/david/projects/frontend/web-content/WEB-INF <-- the WEB-INF with the web.xml
/home/david/projects/tomcat <-- tomcat base directory
/home/david/projects/tomcat/Catalina/localhost <-- holds the frontend.xml context configuration
私が試してみました
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/frontend" docBase="../../frontend/web-content">
</Context>
しかし、それはうまくいきませんでした。/web-content の前のパス全体が無視されているようです。ログには次のように記載されています。
The main resource set specified [/home/david/projects/tomcat/webapps/web-content] is not valid
コンテキストコンテナのTomcat 8ドキュメントには次のように書かれています:
このディレクトリまたは WAR ファイルの絶対パス名を指定するか、所有するホストの appBase ディレクトリからの相対パス名を指定できます。
ここで相対とは、appBase の厳密なサブディレクトリを意味しますか (.. は許可されません)?
絶対パスの設定は問題なく機能します。構成
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/frontend" docBase="/home/david/projects/frontend/web-content">
</Context>
動作しますが、それは私のコンピューターに固有のものです。そのため、コンテキスト構成を変更せずに共有することはできなくなりました。
Tomcat サーバーの appBase ディレクトリ内にシンボリック リンクを作成し、アプリケーションの web-content フォルダーを指すようにすることができます。これは機能しますが、Linux マシンと Windows マシンでは構成 (シンボリック リンク) が異なります。