ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Apache Tomcat とは
Apache Tomcat は Apache Software Foundation が開発するオープンソースの Java Servlet コンテナ。Java の Web 標準仕様(Servlet / JSP / WebSocket / Expression Language)を実装した Web サーバーで、Java の Web アプリケーション (WAR ファイル) を動かす定番ミドルウェアです。
「アプリケーションサーバー」のような Java EE 全機能 (EJB, JMS, JTA) は持たず、Web 層に特化した軽量実装。OSS で無償、商用利用も自由です。
バージョンと Servlet 仕様
| Tomcat | Servlet 仕様 | 必要 Java | パッケージ | 状況 |
|---|---|---|---|---|
| Tomcat 7 | Servlet 3.0 | Java 6+ | javax.servlet | サポート終了 |
| Tomcat 8.5 | Servlet 3.1 | Java 7+ | javax.servlet | 2024-03 EOL |
| Tomcat 9 | Servlet 4.0 | Java 8+ | javax.servlet | 事実上の標準(既存系) |
| Tomcat 10 | Servlet 5.0 (Jakarta EE 9) | Java 8+ | jakarta.servlet | 移行版 |
| Tomcat 10.1 | Servlet 6.0 (Jakarta EE 10) | Java 11+ | jakarta.servlet | 新規推奨 |
| Tomcat 11 | Servlet 6.1 (Jakarta EE 11) | Java 17+ | jakarta.servlet | 最新 |
javax → jakarta 問題
Tomcat 9 までは javax.servlet.*、Tomcat 10 以降は jakarta.servlet.* に名前空間が変わりました。Servlet コードを書き換えるか、変換ツールで一括置換しないと Tomcat 10 で動きません。
// Tomcat 9 まで
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// Tomcat 10 以降
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
既存資産が大量にある場合はTomcat 9 を使い続ける選択肢が現実的。新規は Tomcat 10.1+ を推奨。
インストールとディレクトリ構造
# Linux
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.34/bin/apache-tomcat-10.1.34.tar.gz
tar xzf apache-tomcat-10.1.34.tar.gz
cd apache-tomcat-10.1.34/
# 起動
bin/startup.sh
# 停止
bin/shutdown.sh
# ログ確認
tail -f logs/catalina.out
| ディレクトリ | 役割 |
|---|---|
bin/ | startup.sh / shutdown.sh / catalina.sh など起動スクリプト |
conf/ | server.xml / web.xml / context.xml / tomcat-users.xml |
webapps/ | WAR ファイル配置場所。自動展開される |
logs/ | catalina.out / localhost_access_log / catalina.YYYY-MM-DD.log |
lib/ | Tomcat 共通ライブラリ (JDBC ドライバなどを置く) |
temp/ | 一時ファイル |
work/ | JSP コンパイル結果 |
server.xml の主要設定
デプロイ方法
- WAR ファイルを
webapps/に配置 → 自動展開(autoDeploy=true) - Manager App から GUI でアップロード → http://localhost:8080/manager/html
- Maven / Gradle プラグイン →
mvn tomcat7:deploy - context.xml に Path を記述 → 独自パスに展開
# Manager App を使う場合、conf/tomcat-users.xml に
#
# CLI から WAR デプロイ
curl -u admin:adminpass -T myapp.war \
"http://localhost:8080/manager/text/deploy?path=/myapp&update=true"
# アンデプロイ
curl -u admin:adminpass \
"http://localhost:8080/manager/text/undeploy?path=/myapp"
Tomcat vs Spring Boot Embedded
Spring Boot は Tomcat / Jetty / Undertow を埋め込み (Embedded) で同梱し、java -jar app.jar で起動する単独サーバーとして動かせます。
| 方式 | メリット | デメリット |
|---|---|---|
| Tomcat (Standalone) | 1 つの Tomcat に複数アプリ同居可。運用ノウハウ豊富 | 環境構築が必要。Tomcat 設定とアプリ設定が分離 |
| Spring Boot Embedded | JAR 1 つで完結。Docker と相性良い | サーバー = アプリ = 1 対 1。Tomcat 共有不可 |
JVM オプション (CATALINA_OPTS)
# bin/setenv.sh を作成(環境別チューニング推奨方法)
cat > bin/setenv.sh <<'EOF'
export CATALINA_OPTS="-Xms2g -Xmx4g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-Djava.awt.headless=true \
-Dfile.encoding=UTF-8 \
-Duser.timezone=Asia/Tokyo \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/var/log/tomcat/heapdump.hprof"
EOF
chmod +x bin/setenv.sh
# JMX 有効化(監視用)
export CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9010 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false"
FAQ
Q: Tomcat 9 から 10 へ移行する手順は
A: Apache Tomcat Migration Tool for Jakarta EE(OSS)を使うと WAR 内の javax.* を jakarta.* に一括変換できます。WebSocket / EL / JSF など全標準 API が対象です。
Q: Apache HTTP Server (httpd) と連携する必要はあるか
A: 必須ではありません。Tomcat 単独で HTTPS も提供できます。静的ファイル配信パフォーマンス / 大規模で複雑な VirtualHost が必要な場合のみ httpd + AJP / mod_jk を検討してください。
Q: メモリ不足で OutOfMemoryError が出る
A: -Xmx を増やし、-XX:+HeapDumpOnOutOfMemoryError でヒープダンプを取って Eclipse MAT で解析。WAR のリロードで PermGen / Metaspace が膨らむケースも要注意。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
- Apache HTTP Server
- Apache Tomcat
- Nginx
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?