2015/02/11

「動的Webプロジェクト」は自動配備されない?

自宅のOS X(10.9)でStruts2をいじってみようとしたところ、入門サイト通りの手順で作成しても、ブラウザで表示した際に404 Not Found表示が出てしまいました。

当たり前なんですが、パッケージしたファイルを配備しないと作成したページにアクセス出来ません。

EclipseでTomcatプロジェクト作成すると、以下のローカルファイルとアドレスがリンクされます。

  • ローカル:{PROJECT_HOME}/WEB-INF/*
  • アドレス:http://localhost:8080/{PROJECT_NAME}/*

ただし、ブラウザからのアクセスで実際に閲覧しているファイルの実体は、

  • ローカル:{TOMCAT_HOME}/{VERSIOIN_NO}/webapps/{PROJECT_NAME}.war/*

になります。

プロジェクトの新規作成時に「Tomcatプロジェクト」を選ぶと、配備(デプロイ)設定が自動的にされますので、プロジェクトファイルをコンパイルした際に必要ファイルをwarにパッケージして、webapps/以下に配備してくれます。

しかし、「動的Webプロジェクト」を選ぶと、この配備設定が空欄になっており、コンパイルしても配備されませんでした。

当然、存在しないファイルを見に行くので、404 Not Foundになります。

「動的Webプロジェクト」を作成した場合、プロジェクトのプロパティを開いて、

[Tomcat] > [全般]タブ > [Tomcatプロジェクト]へチェックを入れ、コンテキスト名に"/{PROJECT_NAME}"を設定します。

次いで、[WARエクスポート設定]タブ > [エクスポートするWARファイル]にwarファイルのパスを設定します。

上記画像のパスは私の環境でのパスなので、適宜置き換える必要があります。

この設定をすると、プロジェクトのコンテキストメニューに[Tomcarプロジェクト]というメニューが追加されます。

[Tomcatプロジェクト] > [プロジェクトの設定に従いWARファイルを作成]を選択すると、設定したパスに*.warファイルが出力されます。

この状態で、Tomcatを起動してからブラウザでhttp://localhost〜にアクセスするか、プロジェクトのコンテキストメニューから、[実行] > [サーバで実行]を選ぶとEclipse内にプレビュータブが表示されると思います。