Apache Tomcat と Eclipse の連携設定
[履歴] [最終更新] (2017/05/24 23:55:39)
1
作品
355
技術情報
最近の投稿
ここは
趣味の電子工作を楽しむ人のためのハードウェア情報共有サイト

技術情報や作品の投稿機能、リアルタイム遠隔操作 API をご利用いただけます。
新着作品

概要

Java で Web アプリケーションを開発する際は、一般にビルド結果および必要なリソースファイルなどを WAR (Web application ARchive) 形式のファイルにパッケージングします。JAR ファイルと同様に実行可能 WAR を作ることもできますが、通常は Servlet コンテナとよばれるアプリケーションの上で動かします。Servlet コンテナとしては Tomcat が有名です。本ページでは Tomcat で動かすアプリケーションを Eclipse で開発するための基本的な設定方法をまとめます。

Tomcat には Catalina とよばれる Servlet コンテナだけでなく、開発時などを想定して Coyote とよばれる HTTP サーバも内蔵されているため、単体で HTTP リクエストを受けて WAR を利用したレスポンスを返すことができます。Servlet コンテナは必ずしも WAR ファイルの外で提供する必要はなく、Jetty のような軽量な Servlet をアプリケーションに組込むこともできます。

開発用 Tomcat インストール

ここでは特に、開発時に使用する Windows および macOS を想定して、Eclipse との連携を意識した Tomcat インストールを行います。Java EE 開発用の Eclipse はインストール済みであるとします。

Windows

例えば Tomcat 8.0 をインストールしたい場合は、こちらのページの Core / 32-bit/64-bit Windows Service Installer をダウンロードしてインストールします。

macOS

Homebrew を利用します。以下は 2017/04/23 現在の実行結果です。

$ brew info tomcat
tomcat: stable 8.0.35, devel 9.0.0.M6
Implementation of Java Servlet and JavaServer Pages
https://tomcat.apache.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/tomcat.rb
==> Options
--with-fulldocs
    Install full documentation locally
--devel
    Install development version 9.0.0.M6

$ brew install tomcat

起動して localhost の 8080 にアクセスしてみましょう。

$ catalina start

Eclipse への Tomcat 登録

インストールした Tomcat を Eclipse から操作できるように設定します。

ランタイム環境の追加

Eclipse 環境設定の Server → Runtime Environments で Add をクリックします。

Uploaded Image

インストールした Tomcat のバージョンを指定して Next をクリックします。

Uploaded Image

Tomcat installation directory と JRE を設定して Finish をクリックします。まだ Tomcat をインストールしていない場合は、本ウィンドウで Eclipse 内から Download and Install することもできます。後述の「サーバー」ビュー内でサーバーをダブルクリックして開くと、「サーバー・ロケーション」という項目で Tomcat が存在するフォルダを確認できます。

Uploaded Image

追加されると一覧に表示されます。

Uploaded Image

サーバーの新規追加

追加したランタイム環境を利用するサーバーを新規追加します。待ち受けるポート番号などを設定します。File → New → Other → Server → Server をクリックします。

Uploaded Image

Server type 一覧から、インストールした Tomcat のバージョンを選択します。Server's host name はそのままでよく、Server name を適宜変更します。また、Server runtime environment は先程追加したものを選択します。

Uploaded Image

Finish を押すとサーバーが追加されたことが確認できます。

Uploaded Image

Uploaded Image

ポート番号を変更するためには Servers ビュー内の my_server_8080 をダブルクリックします。同じ「Overview」タブ内では、サーバー起動時のタイムアウト時間も既定値の 45 秒から変更できます。パス名を既定値から変更するためには「modules」タブを開いて編集します。

Uploaded Image

サンプルアプリケーションの作成

登録したサーバー上で動作させるための Servlet コンテナで動くサンプルアプリケーションを作成します。

プロジェクトの作成

File → New → Projects → Web → Dynamic Web Project を選択して Next をクリックします。

Uploaded Image

Project name に MyWebApp と入力して Next をクリックします。

Uploaded Image

何も変更せずに Next をクリックします。

Uploaded Image

Generate web.xml deployment descriptor にチェックを入れて Finish をクリックします。

Uploaded Image

アプリケーションコードの追加

Servlet

プロジェクト内で右クリックして New → Servlet をクリックします。

Uploaded Image

Java package と Class name を入力して Finish をクリックします。

Uploaded Image

プロジェクトに追加されたことを確認します。

Uploaded Image

JSP

同様に JSP File を追加します。

Uploaded Image

ファイル名を指定します。

Uploaded Image

body に適当な文字列を追記します。

Uploaded Image

ビルドパスの追加

追加した Servlet コードの雛形内で使用されているクラスを定義する JAR が参照できないため、初期状態では Problems ビューなどでエラーが確認できます。これを解消するために、インストールした Tomcat の JAR をビルドパスに追加します。個人開発であれば、プロジェクトを右クリックして Properties から追加すればよいです。Java Build Path の Libraries にある Add External JARs をクリックして jsp-api.jarservlet-api.jar を追加します。macOS の場合は事前に Finder で「移動」→「フォルダへ移動」で /usr/local/Cellar/tomcat/8.0.35/libexec などに移動して、サイドバーに lib をショートカット登録しておくと選択できます。

Uploaded Image

追加されてエラーが解消したことを確認します。

Uploaded Image

ただし war ファイルを生成する際などには、上記 JAR 二つは含まれないことに関する警告が出ています。

Uploaded Image

また、複数人での開発時には、メンバー間で異なるパスに Tomcat をインストールした場合に .classpath をレポジトリに含めていると不都合が発生することにも注意します。

$ cat .classpath 
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="owner.project.facets" value="java"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="lib" path="/usr/local/Cellar/tomcat/8.0.35/libexec/lib/jsp-api.jar"/>  ← 絶対パス
    <classpathentry kind="lib" path="/usr/local/Cellar/tomcat/8.0.35/libexec/lib/servlet-api.jar"/>  ← 絶対パス
    <classpathentry kind="output" path="build/classes"/>
</classpath>

サーバーでの動作確認

プロジェクトを右クリックして Run As → Run on Server をクリックします。

Uploaded Image

my_server_8080 選択して Always use this server when running this project にチェックを入れてから Finish をクリックします。

Uploaded Image

他のブラウザまたは Eclipse 内の地球儀のアイコンをクリックして URL を適切に入力するとサンプルアプリケーションが動作していることが確認できます。

Uploaded Image

突然起動しなくなったとき

とりあえず以下の操作で状態を初期化してみます。また、不要なプロジェクトは右クリックして「Close Project」で閉じておきます。ビルド時などにおいて、処理されずに無視されるようになります。

  1. すべてのプロジェクトで右クリック → Refresh
  2. Alt + F5 で Update Maven Project (Maven プロジェクトの場合)
  3. Project → Build All
  4. サーバーを右クリック → Clean → OK
  5. サーバーを右クリック → Clean Tomcat Work Directory

複数のサーバーを起動した場合

「コンソール」ビュー内のボタンを押すと、ログを閲覧したいサーバーを切り換えることができます。