0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java初心者向け|Tomcatの仕組み・役割・導入方法をやさしく解説

Posted at

こんにちは、decoponです。

JavaのWebアプリ開発でよく登場する「Tomcat」ですが、
業務で使っていても「実はよくわかってない…」という方、いませんか?

私自身、環境構築の中でTomcatに出会い、
「ネコのアイコンはかわいいけど、何してるのこの子…?」と戸惑ったひとりです。

この記事では、そんなTomcatの正体や仕組み、導入方法、アプリの動かし方まで、
初心者の方にもわかりやすくまとめてみました!


✅ この記事でわかること

  • Tomcatとは何か?どんな役割を持っているのか
  • Java Webアプリを動かす仕組み(ざっくり構造)
  • Tomcatの導入手順と基本設定
  • WARファイルのデプロイ方法
  • 業務で使うときの注意点(ログ・設定ファイルなど)

🐾 Tomcatって何者?

Tomcatは、Javaで作られたWebアプリケーションを動かすための「サーブレットコンテナ」です。
ServletやJSPといったJavaのWeb技術を実行するための“舞台”を提供してくれます。

たとえるなら、Tomcatは「注文を受けて料理を作るコックさん」🍳
ブラウザからのリクエストを受け取り、Javaアプリで処理して、結果を返してくれる存在です。


🧭 Tomcatの仕組みをざっくり理解しよう

Tomcatの内部では、以下のような流れでリクエストが処理されます:

  1. ブラウザが http://localhost:8080/myapp にアクセス
  2. Connector がリクエストを受け取る
  3. Engine → Host → Context を通ってアプリに振り分け
  4. ServletやJSPが処理を実行
  5. 結果をレスポンスとして返す

主要な構成要素:

コンポーネント 役割
Connector リクエストの受付窓口(HTTPなど)
Engine リクエストのルーティング
Host 仮想ホスト(ドメイン)単位の管理
Context Webアプリ単位の処理(ServletやJSP)

🛠 Tomcatの導入方法(Windows/Mac共通)

  1. 公式サイト からZIP版をダウンロード
  2. 任意のフォルダに展開(例:C:\dev\tomcat-10.1.XX
  3. bin/startup.bat(または startup.sh)を実行
  4. ブラウザで http://localhost:8080/ にアクセス
  5. Tomcatのウェルカムページが表示されれば成功 🎉

※ JDKのインストールと JAVA_HOME の設定が必要です。


📦 WARファイルをデプロイしてみよう

JavaのWebアプリは .war ファイルにまとめてTomcatに渡します。

MavenでWARを作成する場合:

<packaging>war</packaging>
mvn clean package

生成された your-app.warwebapps/ フォルダにコピーすれば、Tomcatが自動で展開してくれます。

アクセスURL例:

http://localhost:8080/your-app/

🧾 業務で使うときのポイントと注意点

Tomcatは「動かすだけ」なら簡単ですが、業務で安定して使うにはいくつか知っておきたいポイントがあります。

🔍 ログの確認

Tomcatは logs/ フォルダにさまざまなログを出力しています。
エラー調査やアクセス状況の確認に役立つので、最低限どこに何があるかは押さえておきましょう。

ファイル名 内容
catalina.out 標準出力・エラー出力(Linux環境でよく使われます)
catalina.YYYY-MM-DD.log Tomcat全体の起動・停止ログ
localhost.YYYY-MM-DD.log Webアプリのログ(ServletContext単位)
localhost_access_log.YYYY-MM-DD.txt アクセスログ(リクエストの記録)

特に catalina.loglocalhost.log は、エラーの原因を探すときの第一歩になります。

⚙️ よく使う設定ファイル

Tomcatの設定ファイルは conf/ ディレクトリにまとまっています。

ファイル名 主な役割
server.xml ポート番号やConnectorの設定
web.xml デフォルトのServlet設定(全体に影響)
context.xml Webアプリ単位の設定(DB接続など)
logging.properties ログ出力のレベルや出力先の設定

例:ポート番号を変更したい場合(server.xml)

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

8080番が他のアプリと競合している場合は、ここを例えば 8081 に変更すればOKです。

🧯 よくあるトラブルと対処法

Tomcatを使っていると、最初のうちは「えっ、なんで動かないの…?」という場面に出くわすこともあります。
ここでは、私自身がつまずいたことも含めて、よくあるトラブルとその対処法をまとめてみました。

症状 原因 対処法
Tomcatが起動しない JAVA_HOME が未設定/JDKが未インストール JDKをインストールし、環境変数 JAVA_HOME を設定する
ポート8080が使えない 他のアプリ(Skypeなど)が使用中 conf/server.xml<Connector port="8080" ... /> を別のポートに変更(例:8081)
WARファイルが展開されない WARファイルの構成ミス WEB-INF フォルダがあるか、web.xml が正しく配置されているか確認する
404エラーになる URLが間違っている/アプリが展開されていない webapps/ に正しく配置されているか、アプリ名とURLが一致しているか確認
500エラーになる サーブレットやJSPの例外 logs/localhost.logcatalina.log を確認してスタックトレースを追う
メモリ不足で落ちる OutOfMemoryError 発生 setenv.bat(または .sh)で -Xmx オプションを指定してヒープサイズを増やす
ログが文字化けする ログ出力のエンコーディング設定が不一致 conf/logging.propertiesjava.util.logging.ConsoleHandler.encodingUTF-8 に変更

💡 補足:メモリ設定の例(Windows)

set CATALINA_OPTS=-Xms512m -Xmx1024m

Tomcatの bin フォルダに setenv.bat を作成して、上記のように記述します(Linux/Macは setenv.sh)。

🐾 迷ったらログを見る!

Tomcatはとてもおしゃべりな子です。 何か問題が起きたときは、まず logs/ フォルダをのぞいてみましょう。 エラーのヒントは、たいていそこに書かれています📝


🧃 まとめ:Tomcatは“静かに支える相棒”です

Tomcatは、普段はあまり目立たない存在かもしれません。
でも、JavaのWebアプリがちゃんと動いてくれるのは、Tomcatがしっかり支えてくれているからです。

「なんとなく使っていた」から「ちゃんと理解して使える」へ。
その一歩を踏み出せたあなたは、もう立派なTomcat使いです🐱✨


📮 おわりに

ここまで読んでくださって、本当にありがとうございました。

Tomcatは業務でよく使われる一方で、「とりあえず動かしてるけど、実はよくわかっていない…」という存在でもあります。
私自身もそんな状態からスタートしました。

この記事では、Tomcatの仕組みや導入方法、アプリの動かし方、そして業務での注意点まで、初心者の方にもわかりやすく整理してみました。

もしこの記事が、あなたの中の「Tomcatって何者?」というモヤモヤを少しでも晴らすきっかけになっていたら、とてもうれしいです。

また別の記事でも、あなたの「?」にそっと寄り添えるような内容をお届けできたらと思います🌿


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?