サーバー側で動作するJavaはサーブレットと呼ばれます。基本的な原理はCGIに似ていますが、CGIにはないメリットがあります。
- CGIより速い -
Javaサーブレットは、アプレットのように直接仮想マシン上で動作するのではなく、サーブレット・コンテナと呼ばれる機構を介して実行されます。サーブレット・コンテナはWebサーバーと連動し、Webサーバーからの要求に応えてサーブレットを実行します。
処理を行ったサーブレットは結果をHTMLデータとしてWebサーバーに返し、それがクライアントに送信されます。
このように、サーブレットの大まかな動作はCGIに似ています。異なるのは、サーブレットがサーブレット・コンテナを経由してJava仮想マシンで動作する点です。CGIのように標準入出力や環境領域など、サーバーOSの機能を直接使う訳ではありません。
CGIは個々のプログラムを単独で起動するため、リクエストから起動までに時間がかかります。加えてCGIは、複数のリクエストに対して同じプログラムが複数実行されます。一方サーブレットは、一度起動するとコンテナ内に常駐し、内部でスレッドを生成するため、起動も実行も高速になります。
- コンテナとサーバー -
サーブレットの実行環境には、いくつかの形態があります。これは、サーブレットを実行するコンテナと、コンテナを介してサーブレットと連携するWebサーバーとの関係による違いです。
1つは、コンテナ自体がWebサーバーの機能も持っている形態で、Javaで開発されたアプリケーションサーバーに代表されます。雑誌などでよく紹介されているjakarta Tomcatも、コンテナとWebサーバーの機能を持っています。
これと似た形態に、内部にコンテナ機能を持っているWebサーバーがあります。コンテナがWebサーバー機能を持っている形態と、基本的には同じことです。Java以外の言語でアプリケーションを開発することも可能なアプリケーションサーバーなどは、この形態です。
3つ目は、既存のWebサーバーにプラグインとしてコンテナの機能を組み込む形態で、アドオンタイプなどと呼ばれています。Tomcatは単独のコンテナとして、ApacheやIISに組み込んで利用できます。
- サーブレット版“Hello world” -
サーブレットのサンプルを紹介しておきます。アプレットのところで取り上げた、Java版“Hello world”です。実行すると、ブラウザに“Hello Servlet world!”の文字列が表示されます。
もちろん、サーブレットの実行環境がなければ、動作を試すことはできません。
リスト1:サーブレット版“Hello world”プログラム(HelloSv.java)
- サーブレットの実行 -
リスト1のソースをjavacでコンパイルすると、HelloSv.classというクラスファイルが生成されます。生成されたサーブレットを実行するには、出来上がったクラスファイルをサーブレット・コンテナの指定されたディレクトリに保存し、ブラウザからクラスへのURLを指定します。
Tomcatの場合なら、例えば以下のようなディレクトリに保存することになります(Windows版の場合)。
C:\tomcat\webapps\test\WEB-INF\calsses
↑Tomcatをインストールしたディレクトリ
ファイルを保存してからTomcatを起動(再起動)すれば、あとはブラウザから例えば以下のようにURLを指定することで、サーブレットが実行され画面にメッセージが表示されます。
http://xxxx.xx/test/servlet/HelloSv
ローカルな環境で試す場合は、
http://localhost:8080/test/servlet/HelloSv
のようにします。
これらはあくまで一例です。ソースのコンパイル方法やコンテナのインストール方法、その他詳しい設定方法などは本記事のテーマから離れるため、省略しています。実際にサーブレットを試す場合は、Tomcatなどのサーブレット・コンテナやJ2SEのドキュメントをお読みください。
|
|
|