ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 の主要設定
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<!-- HTTP コネクタ -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="200"
redirectPort="8443" />
<!-- AJP コネクタ (Apache HTTP Server と連携時) -->
<Connector port="8009" protocol="AJP/1.3"
address="127.0.0.1"
secretRequired="true"
secret="changeme"
redirectPort="8443" />
<!-- HTTPS コネクタ -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
SSLEnabled="true" maxThreads="200">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="changeit"
type="RSA" />
</SSLHostConfig>
</Connector>
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true" />
</Engine>
</Service>
</Server>
デプロイ方法
- 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 に
# <user username="admin" password="adminpass"
# roles="manager-gui,manager-script"/>
# 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アノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?