Java サーブレットの使用

Java サーブレットは、Web サーバーにカスタム機能を追加できるようにする、Java 言語で書かれたサーバー側コンポーネントです。サーブレットは Web サーバーで動作し、パフォーマンス、データベース接続性、安定性、およびセキュリティの面で高い機能を備えています。

特定の Web サーバーの実装のために C++ や Perl で書かれるケースの多い CGI スクリプトと違い、サーブレットは Java で書かれるため、「Write Once, Run Anywhere (一度記述すればどこででも実行可能)」という Java の利点をはじめ、Java プログラミング言語のすべての利点を活用できます。

サーブレットは HTTP の要求/応答プロトコルをサポートしているため、Web ベースのアプリケーションには特に適しています。次の図は、Java サーブレットの基本的な処理モデルを示します。

この図に示すように、HTTP 要求を受け取ると、Web サーバーはその要求がサーブレットを参照しているかどうかを判別し、適切なサーブレットを呼び出すサーブレット エンジンに転送します。サーブレットは要求を処理し、Web サーバーがクライアントに転送する応答を返します。

サーブレットを使用すると、特定の Web サーバーを実装するための複雑な処理や、プラットフォーム固有の動作にわずらわされることなく、最新のアプリケーションを作成できます。Web アプリケーションの構成要素 (HTML、フォーム データ、要求ヘッダ、クッキーなど) はすべてサーブレット API でサポートされています。

サーブレットの呼び出し

クライアントは URL を Web リソースとして参照し、サーブレットを呼び出します。URL がサーブレットを参照することは、Web クライアントからはわかりません。

通常、クライアントは次のいずれかの方法でサーブレットを呼び出します。

これらのメソッドについては、本書の後の章で説明します。

サーブレットの利点

サーブレットには、従来のサーバー側アプリケーション開発技術と比較すると、Web 開発者にとって多数の利点があります。その中には、Java プログラミング言語に関するものもあれば、サーブレット技術に関するものもあります。このセクションでは、サーブレットと Java を使用する場合のいくつかの利点について説明します。

サーブレットを使用した場合の利点

サーブレット技術を使用した場合、Web 開発者にとって次のような利点があります。

Java を使用する利点

サーブレットの最も重要な利点は、サーブレットの結果が Java プログラミング言語で実装される点です。サーブレットは、Java 本来の移植性を活用して、すべての Web サーバー、および JRun でサポートされているサーバー プラットフォームで実行できます。

Java には、アプリケーション プログラマにとって、次のような多数の利点があります。

サーブレットは Java または JavaServer Pages を使用して開発するため、Java プログラミング言語のその他の利点も自動的に付加されます。

サブレットと CGI

Common Gateway Interface (CGI) は、ここ数年、Web サーバーの拡張に使用されるインターフェイスとして主要な位置を占めていました。市場では、すべての Web サーバーに CGI サポートが組み込まれていたため、Web サイトに動的な機能を追加できる開発ツールやアプリケーションに CGI は最も適していました。CGI 言語には、C、C++、および Perl を使用できますが、主流は Perl でした。

そして Java の時代に入ります。まったく新しいネットワーク言語として、Java はインターネットの利用を目的に開発されました。ネットワーク ソケット、データベース接続性、文字列操作など、多数の機能に対するサポートを組み込むことにより、Java は短期間のうちに最も優れた開発言語として世界中の開発者に受け入れられたのです。それにもかかわらず、Java を CGI 言語として使用することには、まだ問題が残されていました。多くのソリューションは、要求ごとに新しい Java Virtual Machine (JVM) を作成するものであったため、結果としてパフォーマンスの低下を招くことになりました。Perl インタープリタと同様に、Java も、要求ごとに新しいプロセスをプログラムに作成する必要がありました。

サーブレットは完全に CGI に取って代わります。サーブレットは、開発者にさらに多数の利点をもたらします。これには、開発の簡易化、高速なスループットと応答、サーブレット間通信のほか、Java 特有のすべての機能が含まれています。

また、サーブレットがプラットフォームに依存せず、移植性があるのに対し、CGI プログラムは高い率でプラットフォームに依存します。CGI スクリプトは通常、特定のハードウェア プラットフォームで実行される特定の Web サーバー用に書かれます。サーブレットの移植性は、複数の Web サーバーやプラットフォーム用のサーブレットを販売するベンダにとって、最も重要な利点といえます。

従来の CGI アプリケーションの主要課題の 1 つは、パフォーマンスです。CGI アプリケーションがクライアントから要求されるたびに、新しいプロセスが作成されます。複数のユーザの要求を処理する人気の高い Web サイトでは、この動作がパフォーマンスの問題を引き起こす可能性があります。

その点、サーブレットは、より効率的に要求を処理します。サーブレットは、最初に要求された時点で、Web サーバーのメモリ領域にロードされます。したがって、後続のクライアントからの要求は、メモリ内のサーブレット インスタンスを呼び出します。

また、サーブレットはスレッドを使用して複数の要求を同時に処理するのに対し、CGI プログラムには本質的にマルチスレッド機能がありません。

サーブレットの作成

JRun には、サーブレットを作成するための 2 つの方法があります。1 つは Java プログラムを作成する方法で、もう 1 つは JavaServer Pages を作成する方法です。Java プログラムを作成すると、Java のデータ処理機能と利点を十分に活用できます。通常は、Java を使用して、データベースのアクセスなどの複雑なデータ操作を実行するサーブレットを作成します。

また、HTML とスクリプト コードを組み合わせたサーバー側のスクリプトの JSP からもサーブレットを作成できます。JSP ページには、Java プログラミング言語の特性を十分に活用できる機能がありますが、HTML コードに Java コードを組み込むには、簡単なメカニズムを使用します。それらは、クライアントのブラウザに直接返される HTML を生成するサーブレットの実装によく使用されます。

サーブレットを作成するための手段については、どちらも本書で説明しています。

JRun によるサーブレットのサポート

なぜ JRun でサーブレットを実行する必要があるのでしょうか。主な理由の 1 つとして、すべての Web サーバーにサーブレット機能が実装されているわけではないことが挙げられます。JRun により、Web サーバーはサーブレットを処理できるように拡張されます。

Web サーバーにすでにサーブレットの実行機能があったとしても、実装されているサーブレット標準が、そのサーバーやサーバーのホストとなるハードウェア プラットフォームに限定されている場合があります。JRun は、完全に移植性のあるサーブレット ソリューションを提供します。JRun を使用して書かれたサーブレットであれば、JRun を使用しているどの Web サーバーでも、あるいはサーブレット標準を装備しているどの Web サーバーでも使用できます。

JRun には、既存の Web サーバーにアクセスできなくても、サーブレットの開発を始められるように、すぐに使用できる Java Web サーバーが用意されています。この組み込みの JRun Web サーバーを使用して、サーブレットの作成、テスト、デバッグを行ってから、互換性が保証されている実際の運用サーバーに公開できます。