Tomcat9 ルートパスにWebアプリケーションを配置する




Tomcatにアプリケーションを配置すると、webapps配下に作成したディレクトリの名前で、コンテキストパスが付いてしまいます。

ローカルのTomcatに、hogehoge.warをデプロイした場合、こんな感じ
http://localhost:8080/hogehoge/…でアクセス
これだと困るとか、見栄えが良くないとかで、http://localhost:8080/…で、アクセスできるように変えたい場合があります。
いくつか方法はありますが、簡単に対応するには「ROOT」ディレクトリにアプリケーションをデプロイすることです。

ROOTディレクトリへのデプロイ

warファイルをデプロイしたい場合

warファイルの名前を変えて、webappsディレクトリに放り込みます。

  1. [CATALINA_HOME]/webappsディレクトリにあるROOTディレクトリを削除。(どこかに退避)
  2. デプロイするwarファイルの名前を、「ROOT.war」にする。
  3. 名前を変えたwarファイル「ROOT.war」を、[CATALINA_HOME]/webappsディレクトリに置く。
  4. Windowsの場合:[CATALINA_HOME]/bin/startup.batでTomcatを起動。
    Linuxの場合:[CATALINA_HOME]/bin/startup.shでTomcatを起動。
  5. ためしに、http://localhost:8080/xxxxにアクセスしてみる。

ファイルを直接デプロイしたい場合

ROOTディレクトリにデプロイしたいアプリケーションを放り込みます。

  1. [CATALINA_HOME]/webappsディレクトリにあるROOTディレクトリの中身をすべて削除。(どこかに退避)
  2. デプロイしたいアプリケーションのディレクトリを丸ごと、ROOTディレクトリに入れる。
  3. Windowsの場合:[CATALINA_HOME]/bin/startup.batでTomcatを起動。
    Linuxの場合:[CATALINA_HOME]/bin/startup.shでTomcatを起動。
  4. ためしに、http://localhost:8080/xxxxにアクセスしてみる。
[CATALINA_HOME]
Tomcatをインストールしたルートパスです。

パスが変わると起こるありがちな問題

パスが変わると、画像ファイルとかが見えなくなったりしますw

相対パスでソース等を直接カキカキしている皆さん:たぶん大丈夫です。良かったですね♪
絶対パスでソース等を直接カキカキしている皆さん:たぶんダメです(; ・`д・´)

絶対パスで指定したい場合、HttpServletRequest#getContextPath()を使うと良い感じです。
ROOTアプリケーションで、コンテキストパスを取得すると、””(空文字列)が返ります。

HttpServletRequest#getContextPath()等、パスの取得方法は、こちら(↓)を見てくださいませ。

Java サーブレットでURLのパスを取得する

2018.02.12