Webアプリケーションのcontext.xmlのdocBase属性への相対パスを設定する方法はありますか?そのため、TomcatサーバーインスタンスのappBaseディレクトリの外にありますか?Context.xml内の相対パス
コンピュータ間でコンテキスト設定を共有し、そのアプリケーションを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 documentationは言う:
あなたは、このディレクトリまたはWARファイルの絶対パス名、またはののappBaseディレクトリからの相対パス名を指定することもできますホストを所有しています。
ここでいう相対値は、appBase(no .. allowed)の厳密なサブディレクトリを意味しますか?
絶対パスを設定すると問題なく動作します。構成
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/frontend" docBase="/home/david/projects/frontend/web-content">
</Context>
が動作しますが、それは自分のコンピュータに固有のものです。だから私はもはや変更せずにコンテキストの設定を共有することはできません。
TomcatサーバーのappBaseディレクトリ内にシンボリックリンクを作成して、自分のアプリケーションのWebコンテンツフォルダを指すようにすることができます。これはうまくいくだろうが、私はLinuxとWindowsマシン上で異なる設定(シンボリックリンク)を持つだろう。
「appBase」はserver.xmlにどのくらい正確に設定されていますか? – david
server.xmlのホスト設定を変更していないので、デフォルト値のままです。 –
david