Tomcatとは何ですか?元のJavaサーブレットコンテナ

Apache Tomcatは、Javaサーブレット、JavaServer Pages(JSP)、WebSockets APIなど、いくつかのコアJavaエンタープライズ仕様を実装する長寿命のオープンソースJavaサーブレットコンテナです。

Apache Software FoundationプロジェクトであるTomcatは、Java自体からわずか4年後の1998年に最初にリリースされました。Tomcatは、最初のJavaサーブレットAPIとJSP仕様のリファレンス実装として開始されました。これらのテクノロジーのいずれのリファレンス実装でもなくなったものの、Tomcatは依然として最も広く使用されているJavaサーバーであり、十分にテストされ、実績のあるコアエンジンと優れた拡張性を誇っています。

この短い紹介では、多くのソフトウェアショップがJavaWebアプリの実行にTomcatを選択する理由を学びます。Tomcatの概要とその使用方法、およびこの記事の執筆時点での最新バージョンのインストール手順を説明します。

TomcatとJavaサーブレットAPI

Tomcat9はサーブレット4.0仕様をサポートしており、JDK8以降が必要です。Tomcat 8.5は、HTTP / 2のようないくつかの新しい機能をサポートしていますが、サーブレット3コンテナのままです。

Tomcatはどのようなサーバーですか?

Javaエコシステムはいくつかの種類のアプリケーションサーバーをサポートしているので、それらを明確にして、Tomcatがどこに適合するかを見てみましょう。

  • サーブレットコンテナは、 Javaサーブレットをホスティングするために主に使用されるJava Servlet仕様の実装です。
  • WebサーバはApacheのように、ローカルシステムからファイルを提供するために設計されたサーバーです。
  • Javaエンタープライズ・アプリケーション・サーバは、 Java EEの(今ジャカルタEE)仕様の本格的な実装です。

本質的に、TomcatはサーブレットおよびJSPコンテナです。Javaサーブレットは、コードとビジネスロジックをカプセル化し、Javaサーバーで要求と応答を処理する方法を定義します。JSPは、サーバー側のビューレンダリングテクノロジです。開発者は、サーブレットまたはJSPページを作成してから、Tomcatにルーティングを処理させます。

Tomcatには、WebサーバーであるCoyoteエンジンも含まれています。Coyoteのおかげで、Tomcatを拡張して、Java Persistence API(JPA)を含むさまざまなJavaエンタープライズ仕様と機能を含めることができます。Tomcatには、より多くのエンタープライズ機能を含むTomEEと呼ばれる拡張バージョンもあります。この記事の後半でTomEEを簡単に紹介します。

まず、Tomcatを使用してサーブレットとJSPをホストする方法を見てみましょう。

Tomcatをダウンロードしてインストールします

ソフトウェアの世界では古くからあるため、Tomcatのバージョンが多数用意されています。バージョンの違いに関する情報は、Tomcatのホームページで入手できます。通常は、最新の安定バージョンを選択するだけです。

私たちの目的のために、Tomcatの最新バージョン(現在はTomcat 9)をダウンロードします。Tomcatをアーカイブ(.zipまたはtar.gz)としてダウンロードするか、インストールされたサービスとしてダウンロードするかを選択できます。最善の選択はあなた次第です-もちろんあなたがWindowsで実行していない場合を除いて、その場合はアーカイブに行きます。この記事ではアーカイブを使用します。

TomcatのWindowsインストール

Windowsを実行していて、インストーラーを使用する場合は、.exeファイルをダウンロードして実行するだけです。Tomcatは、適切なデフォルトでサービスとして自身をインストールします。次に、インストールの場所が通知され、そこでアーカイブを解凍したかのように続行できます。

手順1.コマンドラインインストール

コマンドラインに移動し、「。」を入力gunzip apache-tomcat-9.0.19.tar.gztar -xf apache-tomcat-9.0.19.tarます。これにより、次のディレクトリが作成されます。

  • / binには、Tomcatを実行するためのスクリプトが含まれています。
  • / webappsは、アプリをデプロイする場所です。
  • / logsは、Tomcatがログを出力する場所です。Tomcatのログは/logs/catalina.outデフォルトで入ることに注意してください。このファイルを使用して、アプリ固有のログファイルと組み合わせて問題をデバッグできます。
  • / libは、TomcatがJARを探す場所です。ここには、JPAなど、Tomcatに含まれていない追加のパッケージを保存します。
  • / confは、Tomcatの構成XMLであり、Tomcatのユーザーやロールの追加などを行うことができます。

ステップ2.Tomcatを起動します

Tomcatをサービスとしてインストールした場合、Tomcatはすでに実行されています。それ以外の場合は、先に進み./catalina.sh start、コマンドラインで入力して起動します。(./catalina.sh使用可能なすべてのコマンドを表示するには、引数なしで入力します)。これで、ブラウザでTomcatのウェルカム画面を参照できるようになります。

マシュータイソン

Tomcatでのアプリケーションのデプロイ

Tomcatのwebappsディレクトリは、アプリケーションをデプロイする場所です。.warそこにファイルをドロップすると、Tomcatがそれを実行します。WARファイルは、Webアプリケーションリソースの標準パッケージです。JARファイルには、コンテナ(この場合はTomcat)に実行方法を指示するいくつかの追加ファイルが含まれています。

標準のパッケージの他に、Tomcatにコンテンツをデプロイする方法が3つあります。

爆発的なデプロイ

「分解された」Webアプリは、WARファイルに圧縮されていないアプリケーションです。つまり、ディレクトリとファイルに配置されたすべての要素が含まれています。解凍したTomcatアーカイブには、この方法でデプロイされたいくつかの例が同梱されており、/webapps/examplesディレクトリにあります。展開デプロイの利点は、圧縮を気にせずにそこにあるファイルを確認できることです。

に移動すると//localhost:8080/examples/、リンクのリストが表示されます。このページは、Tomcatによって/webapps/examples/index.htmlファイルからレンダリングされます。Tomcatは、Webサーバーとして機能するTomcatのCoyoteエンジンのインスタンスであるファイルシステムからHTMLファイルを提供しています。

提示された例を自由に探索できます。これらの例は、サーブレット、JSP、およびWebSocketを提供するためのTomcatの機能の概要を示しています。

Tomcatには、/managerパスの下にある管理アプリもデフォルトで含まれています。特に、このアプリを使用すると、Webコンソールからアプリを開始、停止、および再デプロイできます。

静的コンテンツの提供

ファイルシステムからファイルを提供したり、TomcatからApacheなどの別のHTTPサーバーに転送したりすることができます。もう1つの一般的な設定は、ApacheやNginxなどのファイルサーバーをTomcatの前に置き、APIリクエストをTomcatに転送することです。このような場合、mod_JKライブラリを使用して、TomcatとApache(またはIISなどの別のWebサーバー)が通信するように構成します。

主に静的コンテンツの配信におけるパフォーマンスを向上させるために、TomcatはWindowsおよびLinux用のネイティブラッパーも提供しています。これはTomcatAPRと呼ばれ、詳細についてはこちらをご覧ください。これらは一般的なユースケースには必要ありませんが、知っておくとよいでしょう。

組み込みTomcat

長い間、Jettyは組み込みサーバーとして実行できる唯一のサーバーでした。これは変更され、Tomcatも組み込みで実行できるようになりました。組み込みサーバーを使用する際の考え方は、これまで見てきたように、アプリケーションファイルを含むサーバーの代わりに、サーバー機能を呼び出すメインクラスを持つアプリケーション(つまり、スタンドアロンJavaアプリ)があるということです。コードベース内。全体として、これはよりシンプルでポータブルな開発モデルを提供し、急速に標準になりました。たとえば、Spring Bootは、開発モードで実行されている組み込みのTomcatインスタンスを使用します。

組み込みサーバーを実行すると、アプリとサーバーデプロイメントの両方を処理するのではなく、単一のコンポーネント(アプリ)のみを処理するようになったため、操作が大幅に簡素化されます。一方、Tomcatが独立したホストとして実行されるセットアップは依然として非常に一般的です。

TomEE

これらのライブラリをTomcat自体またはアプリケーションの依存関係に追加することで、Tomcatで標準のJava EE(またはJakarta EE)機能をさらに使用することができます。もう1つのオプションはTomEEサーバーです。TomEEは同じTomcatエンジンであり、人気のあるJPAおよびCDI(Contexts and Dependency Injection)APIを含む追加のJavaエンタープライズサポートを備えています。TomEEの仕様はJavaEE Webプロファイルに基づいているため、Tomcat以上のものを提供しますが、WildFlyやGlassfishのような本格的なJavaEEアプリサーバーではありません。

高可用性とクラスタリング

Tomcatは、高可用性とクラスタリングをサポートしています。高可用性とは、基本的に、サーバーの別のインスタンスにフェイルオーバーして、何も問題がなかったかのようにセッションを再作成する機能です。クラスタリングは、大量のトラフィックを処理するために同じサーバーの複数のバージョンを作成する機能です。

結論

Tomcatは引き続き積極的に開発されており、変化に対応し、Webアプリをデプロイするための堅牢で信頼性の高いプラットフォームを提供しています。多くのPaaSシステムのデフォルトのJavaプラットフォームとしての継続的な人気と選択の両方が、その継続的な成功を証明しています。

このストーリー「Tomcatとは?オリジナルのJavaサーブレットコンテナ」は、もともとJavaWorldによって公開されました。