Comments
Description
Transcript
サーブレット/JSPの概要と、 実行環境設定の作業手順
サーブレット/JSPの概要と、 実行環境設定の作業手順 (11/7/2002) 目 次 1章:サーブレットの概要について 1-1)サーバーサイド Java とは・・・ 1-2)サーブレットの実行環境 1-3)サーブレットとアプレットやCGIとの違い 1-4)Web サーバとの連携の仕組み 1-5)サーブレットの弱点 1-6)Web コンテナとは 2章:サーブレットとJSPの違い 2-1)サーバーサイド Java の種類 2-2)サーブレットとJSPの作成方法の違い 2-3)サーブレットの起動方法 3章:サーブレットとJSPの実行環境の構築 インストールと設定作業の大まかな手順 環境変数の設定手順 実運用における設定の Tips J2SE(Java JDK)のインストールと起動/終了方法 Apache のインストールと起動/終了方法 Tomcat のインストールと起動/終了方法 Tomcat のディレクトリ構成 Tomcat のスクリプト Tomcat の設定ファイル Tomcat の Apache へのアドオン Apache への接続テスト 1章:サーブレットの概要について ● 1-1)サーバーサイドJavaとは・・・ 1.サーブレットの語源は、Server side Applet であるとも Server+let(小さいプログラム)とも 言われている。「サーバサイドで動くアプレットのようなもの」と言える。 2.サーブレットの基本的な機能は、サーバサイドで動き、クライアントからのリクエストに応 じて何らかの処理をしてその結果を返すというものである。つまり、サーブレットは、Web サーバ上で動的に HTML ドキュメントを生成し、ブラウザから入力したデータの処理をサ ーバ上で行なう方法である。 3.サーブレットの起源は、1996 年にリリースされた Java で書かれたJeevesというプロ グラムで、その後APIの整備が進み、今では各社の商用アプリケーションサーバでサポー トされるようになった。 ● 1-2)サーブレットの実行環境 1.Java の特長として、サーブレットの動作環境はプラットフォームなどに依存しない。 つまり、サーブレットはアプレット同様 JavaVM上で動くので、サーブレットコンテナを 装備した Web アプリケーションサーバは、Apache はもちろん、MS-IISや他の Web サーバと連動するものがリリースされている。自社サーバを持たずプロバイダーのホスティ ングサービスを利用している場合も、サーブレットをサポートしているプロバイダであれば どこでもかまわないということになる。 2.サーブレットは、クラスファイルがサーブレットコンテナ或いは Web コンテナと呼ばれる 実行環境上にロードされることで実行される。Web コンテナは、通常マルチスレッドモデル をサポートしたサーバプロセスで、サーブレットはそのスレッド上で動作するようになって いる。 ● 1-3)サーブレットとアプレットやCGIとの違い 1.アプレットがクライアントのブラウザで動くのに対し、サーブレットはサーバ上で動く。 また、Web ページ表示に時間のかかるアプレットと違って、サーブレットの実行環境である Web コンテナは、通常運用面から Web サーバ/Web アプリケーションサーバと一緒に起動 され、停止する時も一緒に停止されるので、リクエストがあり次第ただちに実行できる体勢 が整っている。 2.CGI(Common Gateway Interface)も Web サーバと外部プログラムを連携させる仕組 みとして広く普及している。CGIはPerlのような文字列操作に長けた外部プログラム とも簡単に連携できるため動的な Web ページを作るのにも大変便利で、Web の普及ととも に広く利用されるようになった。しかしCGIは、ブラウザからのリクエストの度に新しい プロセスを起動するので、アクセス数の多いサイトなどではパフォーマンス悪化の原因とな るという問題がある。それに対してサーブレットはスレッド上で動作するので、同じプログ ラムであれば、サーバへの負荷となる別プロセスを毎回起動する必要がなく、同じプロセス 内でスレッドを使うだけで済むので、サーバにとっては大変効率的である。 3.サーブレットのその他の利点としてあげられるのが、クライアントの接続情報を保持するク ッキー用APIや、セッション管理専用のAPIを標準装備していることで、オンラインシ ョップや携帯電話向けの Web アプリケーションの開発でも威力を発揮している。 ● 1-4)Web サーバとの連携の仕組み 【Web サーバとCGIの連携の仕組み】 【Web サーバとサーブレットの連携の仕組み】 サーブレット プログラム CGI いくつもの CGI プロセス が立ち上がる PC/携帯 Webサーバ コンテナ内で 複数のスレッ ドが動作する PC/携帯 Webサーバ サーブレット コンテナ ● 1-5)サーブレットの弱点 1.一つのプロセスとして動作するCGIプログラムがメモリやファイルなどのリソースについて も別々に管理されているのに対して、サーブレットはサーブレットを実行するプロセス内で動 作するので、プロセス自体が保持しているメモリ空間などのリソースをスレッド間で共有する ことになる。これは特長の一つでもあるのだが、うっかりするとリソースの競合や他のサーブ レットからの干渉が生じてしまう諸刃の剣となる。従って、他のスレッドと干渉・競合しないス レッドセーフなコードに仕上げるよう、プログラミングには十分気をつける必要がある。 2.サーブレットの実行環境であるサーブレットコンテナは、特に要求がなくても常に起動した 状態で待機するため、SOHOや研究室などのコンピュータのリソースが比較的乏しい環境 になっている場合は、リソースの常時使用が問題になる。 ● 1-6)Web コンテナとは 1.Web コンテナというのは、前述の通りサーブレットが動作する実行環境である。サーブレッ トの実行環境をサーブレットコンテナ、JSPの実行環境をJSPコンテナという。 (サーブレットとJSPの違いは2章)サーブレットコンテナは、ユーザのためにサーブレ ットを管理したり実行するランタイムシェルである。 2. Web コンテナの種類としては、サーブレット/JSPのRI(Reference Implementation) である Apache の Tomcat の他、IBMの WebSphere、BEAの WebLogic など様々なもの がリリースされている。 ※現在リリースされているコンテナ・サーバについては、以下の Homepage で一覧を参照で きる : http://Java.sun.com/products/servlet/industry.html 3.Web コンテナのタイプには以下の3つがある。 ①スタンドアロン型(Java ベースの Web サーバを内蔵しているタイプ、実際には大部 分の Web サーバは Java ベースでないので、②か③を選ぶことになる)。 ②内部プロセス型(追加型・アドオン型で、Web サーバのプラグインと Java のコンテ ナの実装の組み合わせ、処理の高速化が実現されるが、スケーラビリティが制限される)。 ③外部プロセス型(追加型・アドオン型で、Web サーバのプラグインと、外部プロセスと して動作する Web コンテナ又は別のサーバ上の Web コンテナが連携するもの。②の内 部型に比べて、レスポンスは落ちるが、スケーラビリティや拡張性等が高くなる。) ※内蔵 Web サーバは Apache などの外部サーバほど堅牢でなく、設定できる項目が限られている、CGIやPHPをサ ポートしていない、静的なHTML文書は専用サーバの方が高速等の問題点があり、実運用時は Apache などの Web サー バに Tomcat 等の Web コンテナをアドオンして使用するのが主流になっている。 2章:サーブレットとJSPの違い ● 2-1)サーバーサイド Java の種類 1.サーバサイドで動く Java には、サーブレットだけではなく、JSPや JavaBeans、EJBなど がある。それらの特長は以下の通りである: 【JSP】 :サーブレットではCGIプログラムのようにHTML部をプログラム中に記述しなければ ならず、頻繁にデザインの変更が必要な場合は Web ページ保守の負担が大きい。 それに対する一つのソリューションがJSP(Java Server Pages)で、サーブレットと は逆に、HTML文書の中にプログラム部を埋め込む形になっている。 サンプルソースでサーブレットとJSPの違いを確認 : <Noukai001Servlet.Java> 1 import Java.io.IOException; 2 import Java.io.PrintWriter; 3 import Java.io.OutputStreamWriter; 4 import Javax.servlet.ServletException; 5 import Javax.servlet.http.HttpServlet; 6 import Javax.servlet.http.HttpServletRequest; 7 import Javax.servlet.http.HttpServletResponse; 8 9 public class Noukai001Servlet extends HttpServlet { 10 PrintWriter out; 11 public void doGet(HttpServletRequest request, HttpServletResponse response) 12 throws IOException, ServletException { 13 14 out = new PrintWriter(new OutputStreamWriter( 15 response.getOutputStream(), "Shift_JIS" ) ); 16 printHtml(); 17 out.close(); 18 } 19 private void printHtml() { 20 out.println("<html>"); 21 out.println("<head>"); 22 out.println("<title>サーバサイド Java</title>"); 23 out.println("</head>"); 24 out.println("<body>"); 25 out.println("サーバサイド Java"); 26 out.println("</body>"); 27 out.println("</html>"); 28 } 29 } <Noukai002.jsp> <%@ page language="Java" contentType="text/html;charset=Shift_JIS" %> <html> <head> <title>サーバサイド Java</title> </head> <body> <%= "サーバサイド Java" %> </body> </html> 上記のように、サーブレットとJSPでは、ソースコードを見ても違いがわかる。サーブレットの方は、Java プログ ラミングに近いが、JSPの場合はソースを見る感じではプログラム自体をしていないようにも見える。サーブレット には main メソッドやコンストラクタが見当たらないが、import や extends などの単語(予約語)が混じっていること から、これまでの Java 言語によるプログラミングに近いソースコードになっていることが確認できる。 一方、JSP では Java 言語によるプログラミングらしい感じがなく、<%@ ~ %>,<%~ %>の記号で囲まれた部分で 設定や処理を行なうスクリプトレットの形であることが確認できる。マイクロソフトが開発したASPの Java 版である とイメージできる。ゆえに、HTML文書を表示させる処理を行う場合は、明らかにサーブレットよりもJSPの方が 行数を少なく出来て、コーディングも楽である。JSPが開発された理由は、単にサーブレットからHTMLの送信部 分を切り離すことにある。今までは、サーブレットで行っていたHTML文書の送信部分をJSPに分担することによ り、ロジックとデザインの分離を促進したものである。また、定期定期に行なう機能があればカスタムタグ化してしま うことも可能で、デザイナーだけでも JSP ページを制作できるようになっている。 しかしながら、ASPのように文書内にロジックがどんどん埋め込まれてしまうと、どうしても読みづらい文書にな ってしまうので、複雑な処理はサーブレットや JavaBeans、EJBなどに任せ、JSPはそれらと連携するライトウェ イとなフロントエンドに留めておく方が無難である。 【EJB】 :サーブレットもJSPも、ビジネスロジックのような複雑なロジックを組み込むと言う構 想の下で開発されたものではないので、複雑なアプリケーションは苦手である。そのよう な複雑なロジックを対象としたAPIがEJB(Enterprise JavaBeans)である。 EJBには、セッションの管理を担当する「Session Bean」とデータベースと連携してデ ータを永続的に保持する「Entity Bean」があり、いずれもEJBコンテナという専用の 実行環境上で動作する。 【Java Beans】:EJBと名前が似ているが、基本的には別物で、JavaBeans は主にクライアントサ イドで稼動されるGUIサポートがあるという点で、EJBとは異なる。 【JDBC】 :JDBC(Java DataBase Connectivity)は、元々はアプレットやアプリケーションと サーバのデータベースの接続を主眼として開発されたものであり、サーバサイドでもデ ータベースとの接続には欠かせない。 【J2EE】:システム規模が大きくて複雑なエンタープライズ(大企業)におけるシステム開発をサポ ートするために、サーブレット/JSPの機能の他に通信/データベース/メッセージ ングサービス/セキュリティ機能などを加えて、J2SEをベースにして構成したもの がJ2EEである。 ● 2-2)サーブレットとJSPの作成方法の違い 1.サーブレットの作成方法 : ① Javax.servret.HttpServret クラスを継承している。 ★HttpServlet クラスは、javax.servlet.Servlet インターフェイスを実装した抽象クラスで、 GenericServlet(汎用的な利用を念頭に置いたプロトコルに依存しない抽象クラスでアプレットやアプリケ ーションとの接続に用いられる)のサブクラスで、HTTP 接続に特化している。 ★他に Import するクラスとして、以下のものがある。 -[import java.io.*;] (import java.io.PrintWriter, import java.io.IOException) -[import javax.servlet.*;] (import javax.servlet.ServletException) -[import javax.servlet.http.*;] (import javax.servlet.http.HttpServlet, import javax. servlet.http.HttpServletRequest, import javax.servlet.http.HttpServletResponse) ②HTTP GET メソッドに対応した doGet()というメソッドをオーバーライドしている。 ③HTML文書の送信は Javax.servret.HttpServretRespons クラスのインスタンスの getOutputStream()メソッドで取り出されたストリームを PrintWriter クラスでラップしたオブ ジェクトで行う。この時に "Shift_JIS"の文字コードを指定できる。 ④ソースコードの拡張子は「.java」で通常のアプリケーション同様コンパイルされて、拡張子「class」 のクラスファイルになり、実行時には表示しない。 2.JSPの作成方法 : ①最初の行で "~charset=Shift_JIS"という HTML 文書の文字コードを指定する。 ②<%= ~ %>で囲まれた部分がHTML文書として表示する。 ③拡張子は「.jsp」で、ブラウザのアドレスには「.jsp」まで含める。 ★JSP の作成方法は ASP に似ているが、ASP が Windows プラットフォーム固有の環境と開発言語 に限定されているのに対し、JSP は多くの標準化された技術を取り入れているので、様々なプラッ トフォームで動作する。 サーブレット JSP HTML Java コード HTML Java コードが HTML を含む Java コード HTML が Java コードを含む Java コード HTML JSP ではデザイナーが HTML ベー スで記述してロジックが必要な箇 所にマーキングをしておく一方、ロ ジック部はデザインと平行してプ ログラマーが開発したりコードを マーキングされた箇所に埋め込ん だりといった分業が可能になる。 しかも JSP の制作にはサーブレッ トのようなコンパイルが不要であ り、作業分担や作業自体がかなり簡 単に行なえるようになっている。 ● 2-3)サーブレットの起動方法 サーブレットの起動方法には、以下の方法がある : 1.URLを直接指定する : ブラウザのアドレス欄でコンテキストパス(=サーブレット用仮想ディレクトリ)+サーブレット 名(或いはサーブレットにマップされた別名)を指定する。 http://www.honda.co.jp/myapp/servlet/myservlet 2.リンク : HTML文書にハイパーリンク(<a harf>タグ)を埋め込んでおき、そのリンク文字をクリックする。 <html> <head><title>サーブレット起動用サンプル</title></head> <body> <a href=”/myapp/servlet/myservlet”>サーブレットへのリンク</a> </body> </html> 3.<form>タブの action で指定する : CGIでよく利用されるフォームから起動するスタンダードな方法である。 <html> <head><title>サーブレット起動用サンプル</title></head> <body> <form method=”post” action=” /myapp/servlet/myservlet”> 氏名:<input type=”text” name=”name”> 性別:<select name=”sex”><option>男<option>女</select> <input type=”hidden” name=”id” param=”123”> <input type=”submit” value=”送信”> <form> </body> </html> 4.<META>タグで指定する : 次のような<META>タグを使って起動する。但しこれは<META>タグを解析しないブラウザ に対しては効果がなく、無論サーブレットも起動されない。 <META HTTP-EQUIV=”refresh” CONTENT=”5;url=/myapp/servlet/myservlet”> 5.Java Script などから指定する : HTML文書に埋め込んだ Java Script などから起動することができる。 6.サーブレット/JSPから別のサーブレットを呼び出すことができる。 これは「サーブレット・チェイニング」と言われ、サーブレット/JSPで受け付けたりリクエ ストを一時処理して後の処理を専用プログラムで行なったり、クライアントへの応答を専用のJ SPから返す場合に用いられる。※但しコンテナによっては自動リロード機能が適用できない場合もある。 <servlet> <servlet-name>myservlet</servlet-name> <servlet-class>com.mycompany.mypackage.myServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> 7.Web コンテナ/Web アプリケーションサーバ起動時に起動する : 多くの Web アプリケーションサーバでは、起動時サーブレットやJSPを一緒に起動できるよう になっている。デーモン的に常駐させたいサーブレットやJSPがある場合には便利である。 8.自動リロードについて : Web アプリケーションは基本的に24時間稼動なので、クラスフィアルの更新を検知すると自動 的にリロードする機能を備えている。この仕組みは一般に、クラスファイルの変更を検知する機構 と特定のクラスファイルのロード・アンロード機能を持ったサーブレット専用のクラスローダで構 成することで実現されている。 3章:サーブレットとJSPの実行環境の構築 では、実際にサーブレットとJSPの実行環境を構築してみよう。 ここでは、JavaVMとしてJDK、 Web サーバとして Apache、 JSP環境をもった Web コンテナとして Tomcat をインストールする。(OS 環境は WindowsMe) ○J2SEと Apache と Tomcat のインストール 【参考サイト】 項 目 アドレス J2SE(Java SDK)のダウンロード http://java.sun.com/products/archive/ Java SDK のマニュアル http://java.sun.com/products/jdk/1.2/ja/docs/ja/index.html Apache のダウンロード http://httpd.Apache.org/download.cgi Apache のマニュアル http://httpd.Apache.org/docs/ Tomcat のダウンロード http://jakarta.Apache.org/site/binindex.html Tomcat のマニュアル http://jakarta.Apache.org/ 【インストールと設定作業の大まかな手順】 ① JDK(J2SE)をインストールする。 (サンマイクロシステムズの Homepage:http://Java.sun.com/j2se より入手できる) ② 使用しているパソコンの環境変数 JDK_HOME の設定: JDKをインストールしたディレクトリを、環境変数 JDK_HOME にセットする。 SET JAVA_HOME=C:¥JDK1.3.1_02 ※Windows の場合、Cドライブ直下の autoexec.bat ファイルに書き込む。 環境変数を有効にするためには、PCを再起動する。 ③ Tomcat をインストールする。インストール作業は非常に簡単で、アーカイブファイルを適切なディレ クトリ(ここではCドライブ直下)に解凍するだけである。 (バイナリ版の入手は http://jakarta.Apache.org/site/binindex.html よりできる) ④ 使用しているパソコンの環境変数 TOMCAT_HOME の設定: Tomcat がインストールされている最上位ディレクトリに、環境変数 TOM_CAT をセットする。 SET TOMCAT_HOME=C:¥jakarta-Tomcat-3.2.3 ※Windows の場合、Cドライブ直下の autoexec.bat ファイルに書き込む。 ⑤ Apache をインストールする。 (入手先は、http://httpd.Apache.org/download.cgi) ※詳しいインストール手順は以下。 ⑥ Tomcat と Apache を連携させるためのDLLファイルもダウンロードし(入手先は、 http://jakarta.Apache.org/builds/jakarta-Tomcat/release/v3.2.4/bin/win32/i386/) 、Apache をインスト ールしたフォルダにコピーする。Apache の設定ファイル httpd.conf の設定を変更する。 ⑦ 接続テストを行なう。 【環境変数の設定手順】 環境変数 JAVA_HOME の設定 環境変数 TOMCAT_HOME の設定 Windows98 以前の場合は、C ドライブ直下にある「AUTOEXEC.BAT」 ファイルをメモ帳などで開いて、直接編集する必要がある。 環境変数設 定後は、必 ず再起動す ること! 【実運用における設定の Tips】 Tomcat 自体のデフォルト設定は、初心者ユーザーにも使いやすく、操作が理解しやすい設定とな っているため、実運用時には以下のような設定パラメータのチューニングや、パスの追加のような サイト固有のセッティングが必要になる: (1) バッチファイルの変更とカスタマイズ: ディスクリプタの最大数等のリソースの制限の設定、新しい CLASSPATH (JDBC ドライバ等)、 PATH(JDBC ドライバや DLL 等)のエントリの追加、JVMのコマンドラインの設定の変更、 複数のJVMがある場合に使用するJVMの指定、コマンドラインオプションや環境変数のセット (2) JVMのデフォルトの設定の変更: メモリ設定の変更、スレッドの設定の変更、スレッドに最適なJVMの選択 (3) コネクタの変更、コネクタでのスレッドプールの使用: 設定パラメータの変更 (4) サーブレット・オートリロードの無効化 J2SE(Java JDK)のインストールと起動/終了方法 ① 入手した JDK インストールファイルをダブルクリックで起動すると、インストーラが始動する。 (サンマイクロシステムズの Homepage:http://Java.sun.com/j2se よりダウンロードできる) ② インストールフォルダを聞いてくるので、 (C ドライブ直下が無難だが)必要があれば変更する。 ③ インストールするコンポーネントを聞いてくるが、通常はデフォルトのままオプションなどを 変更する必要はない。 JDK のインス トールフォル ダの内容 ④ 前頁の要領で、使用しているパソコンの JDK をインストールしたディレクトリに環境変数 JAVA_HOME を設定する。これによってにパスを通すことができる。 パスが通ると、ソースファイルをコンパイルするための「javac」コマンド、クラスファイルを実 行するための「java」コマンドが利用できるようになる。 ⑤ 環境変数を有効にするために、PCを再起動する。 パスが通っているかを確認! C:¥>echo %JAVA_HOME%と打ってみる。 ⇒ パスが通っていたら C:¥jdk1.3.1_02 と 表示される。 作成したソースファイルをコンパイルしてみる (C:¥Java¥JavaSample>javac Hello.java と打つ) ⇒ パスが通っていたら無事コンパイルでき、 同一ディレクトリに.class ファイルが出来る。 クラスファイルを実行してみる (C:¥Java¥JavaSample>java Hello と打つ) ⇒ パスが通っていたら、Dos 窓に実行結果が 表示される。 C:¥>javac と打ってみる ⇒ パスが通っていたら、javac の使い方説明 が表示される。 Apache のインストールと起動/終了方法 ① "Apache_1.3.20-win32-no_src-r2.msi"をダブルクリックする。 ②「next」をクリックする。 ③「I accept the terms in the license agreement」をクリックして選択し、 「next>」をクリックする。 ④ 同意するかのメッセージで、同意して「next>」をクリックする。 ⑤ 自動に起動するかの質問に、 localdomain / localhost / [email protected] を確認(自動的に起動するように設定)して、「next>」をクリックする。 ⑥ 全てのコンポーネントを設定(Complate)して、「next>」をクリックする。 ⑦ インストール先のフォルダー選択、 "C:¥Program Files¥Apache Group¥" を選んで、 「Install」 をクリックする。 → インストールの開始。 ⑧ インストールが完了すると、メッセージが表示されて「Finish」ボタンが使用可能になるので 「Finish」ボタンを押せば、インストール完了。 ⑨ Apache のインストールができたかの確認は、再度 Apach を起動して確認する。 1)「スタート」→「プログラム」→「Apache httpd Servret」→「Start Apache in Console」で Apache が起動される。 2) MS-DOSプロンプトが表示されて カウントダウンし しばらくすると画面が消えれば、 準備完了となる。Apache が動作可能かを確かめるのに、Web ブラウザに URL として、 http://localhost/ 「Enter」キーを押す。 < Web ブラウザで http://localhost にアクセスし Apache への接続状況を確認する > 他の、Web サーバーを動かす場合は、[スタート]→[Control Apache Server]→[stop]で終了できる。 Tomcat のインストールと起動/終了方法 ☆jakarta-Tomcat-3.2.3.zip を入手し、C:¥を指定して解凍する。 ☆MS-DOS コマンドを起動し、cd¥C:jakarta-Tomcat-3.3.1¥bin を入力する。 C:¥・・・・・>set JAVA_HOME=c:¥jdk1.3.1_02 Startup(.bat) を入力すれば、Tomcat が起動される。 DOS 窓での Tomcat の起動ウィンドウ < < > Web ブラウザで http://localhost:8080 にアクセスし Tomcat の動作確認をする > 【Tomcat 起動時のトラブル】 ☆環境変数の初期サイズ:「環境変数のた めの領域が足りません」というメッセージが 出て起動できない場合は、MS-DOS プロン プトのプロパティ或いは BAT ファイルのプ ロパティを修正する。⇒ メモリタブの「環 境変数の初期サイズ」をエラーメッセージが (Readme ファイルに 出なくなるよう調整する。 は、3072 なら十分であろうと記されている) ☆上記 Tomcat の画像が出れば、Tomcat が Web ブラウザのアクセスを受け付けたことになる。 ☆Tomcat を終了する場合は、 shutdown(.bat) を実行すれば終了する。 Tomcat のディレクトリ構成 ☆Tomcat のバイナリ版をインストールすると、以下のようなディレクトリ構成になる。 Tomcat の Apache へのアドオン ディレクトリ名 bin conf doc lib logs src Webapps work classes 説 明 Startup/shudown/Tomcat などのスクリプトが含まれている Server.xml(Tomcat のメイン設定ファイル)と Tomcat 内で動作する様々な Web アプリケーションのデフォルト値を設定する Web.xml などのファイ ルが含まれている。 Tomcat に関する種々雑多なドキュメントが含まれている。 Tomcat で使われる様々な jar ファイルが含まれている。 Tomcat のログファイルが保存される。 Servlet API のソースファイルが含まれている。 (但し全てのサーブレット コンテナで実装する必要のある空のインターフェイスと抽象クラスがあるのみ。) サンプルアプリケーションが含まれている。 Tomcat が自動的に生成するサブディレクトリ。Tomcat の動作中にコンパ イル済みのJSPファイルのような中間ファイルを置く場所であり、 Tomcat の動作中に削除するとJSPを実行できなくなる。 CLASSPATH にクラスを追加するために、このディレクトリを作ることが で き る 。 こ の デ ィ レ ク ト リ に 追 加 し た 全 て の ク ラ ス は 、 Tomcat の CLASSPATH に含まれる。 ☆ ディレクトリの準備 : Tomcat で Web アプリケーションを動作させるには、Tomcat のインストールディレクトリ 直下の「webapps」というディレクトリに Web アプリケーションの名前のディレクトリを 作る必要がある。次に、その下に「WEB-INF」というディレクトリを作り、その中に web.xml というファイルと「classes」というディレクトリを作る。そしてその「classes」ディレク トリに実際に動作させるサーブレットのクラスファイルを置く。ここで、サーブレットの 設定を行なう web.xml というファイルを作成することによって、web アプリケーションと して動作するようになる。 / jakarta-tomcat/webapps/XXX ├─WEB-INF/ │ └─classes/ http://host/XXX/servlet/*で、サーブレットをアクセス └─jsp/ http://host/XXX/jsp/*で、JSP をアクセス Tomcat のスクリプト ディレクトリ名 Tomcat startup shutdown 説 明 メインスクリプト。CLASSPATH や TOMCAT_HOME、JAVA_HOME を取り込んで適切な環境を設定してから、適切なコマンドライン引数で Tomcat を起動する。(Tomcat.bat) Tomcat をバックグラウンドで起動する。 “Tomcat start”のショートカ ット。(startup.bat) Tomcat を停止する。“Tomcat stop”のショートカット(shutdown.bat) Tomcat の設定ファイル ☆Tomcat の主な設定は、Tomcat ディレクトリ¥conf の中にある「server.xml」「Web.xml」で行なう。 ・「server.xml」は Web コンテナとしての Tomcat のデフォルトの種設定ファイルで、①Tomcat の コンポーネントの初期化、②構成に関する設定(Tomcat をブートし、server.xml 中で指定されて いるコンポーネントをインスタンス化することで、それ自身を構築すること)を行なう。 ・ 「Web.xml」は、サーブレット仕様で規定されているデプロイメント・ディスクリプタで、コンテ キストなどの設定を行なう。 【server.xml】 ディレクトリ名 <Server> 説 明 最上位要素で、一つの Tomcat サーバを定義する。子要素として、 <Logger>と<ContextManager>の要素を含む。 <Logger> ログに関する設定情報。Logger オブジェクトを定義する。どの logger もログ出力を保存するログファイルへのパスとログレベル、それを特 定できる名前を持っている。 <ContextManager> コ ン テ キ ス ト 管 理 に 関 す る 設 定 情 報 。 <ContextInterceptor> 、 <RequestInterceptor>、<Connector>、<Context>の設定と構造を定 義する。属性として以下の4つがある。 ①デバッグメッセージをロッギングするデバッグレベル、 ②TWebapps/,conf/,logs/及び全ての定義済みコンテキストのベース位置 ③作業ディレクトリの名前 ④Stack trace や他のデバッグ情報がデフォルトでレスポンスに含ま れるかどうかの設定。 <ContextInterceptor> コンテキストのイベントの監視に関する設定情報。Tomcat の起動停止 イベントを監視する。 <RequestInterceptor> リクエストのイベントの監視に関する設定情報。ユーザリクエストが 必要とする様々なサービスを監視する。 <Connector> 接続に関する設定情報。Web サーバを経由するかユーザのブラウザに 直接送信するコネクションを提供する。設定の種類として、①handler クラス、②handler が監視する TCP/IP や port 番号、③handler のサ ーバソケットの TCP/IP バックログがある。 <Context> Web アプリケーションを格納するパスに関する設定情報。各 Context は Web アプリケーションを置く Tomcat の階層パスを表す。Context の種類として以下のものがある。 ① Context があるパス。絶対パスか ContextManager への相対パス ② デバッグ情報をロギングする際のデバッグレベル ③ リロードフラグ ☆Web アプリケーションとしてサーブレットを動作させるためには、Tomcat に Web アプリケーシ ョンの存在を知らせてあげる必要があるので、 「server.xml」ファイルをテキストエディタで開き、 以下の1文を追加する: <Context path=”/ex10_3_1” docBase=”ex10_3_1” debug=”0”reloadable=”true” crossContext=”true”/> 【web.xml】 ☆ Web.xml に関しては少し Tomcat に関連した「特徴」がある。Tomcat は conf ディレクトリ中 にデフォルトの Web.xml を置いておけば、全てのコンテキストに対してデフォルトの Web.xml の値を定義する。 ☆ 新しいコンテキストを構築する時には、Tomcat は基本設定としてデフォルトの Web.xml を使 用して、さらにアプリケーション専用の Web.xml を使用して、これらのデフォルト値を上書 きする。C:¥jakarta-Tomcat-3.2.3¥conf docBase="C:¥Program Files¥Apache Group¥Apache¥htdocs¥JSP" Tomcat の Apache へのアドオン ここまでは、別々に起動し、単体のみで実行していた Tomcat と Apache を同時に実行させる。 これによって Apache が Web サーバとして Web ブラウザからのアクセスを受け、Tomcat はサーブ レットやJSPプログラムの実行に専念するという連携プレイが実現する。この方法は Web サーバへ のアクセスが多い場合に有効となる。 【Webサーバの動作】 Web サーバはクライアントからの HTTP リクエストを常に待っていて、リクエストが届いた時には予 め必要なコンテンツを用意しておくことで、リクエストに必要な処理を行なっている。サーブレットコ ンテナを追加すると、Web サーバは以下の処理を実行する必要がある: ・ サーブレットコンテナアダプタライブラリをロードして、それをリクエスト処理前に初期化する。 ・ リクエストが届いた時にそのリクエストをチェックし、サーブレットに対する場合にはアダプター にリクエストを渡して処理をする。 【アダプタ側の動作】 アダプタはこれから処理するリクエストが、リクエスト URL のどのパターンを元にしていて、どこに リクエストを向けたらいいのかを知っておく必要がある。 (1) "mod_jk.dll"の Apache インストールフォルダへの追加: "mod_jk.dll"というファイルを、Apache をインストールしたフォルダー (C:¥program Files¥Apache Group¥Apache)にある modules フォルダにコピーする。 すでに Tomcat を起動している場合は、Tomcat ををインストールした フォルダの下にある conf フォルダに"mod_jk.conf-auto"が 出来ているのを確認する。(C:¥jakarta-Tomcat-3.2.3¥conf) このファイルが存在しない場合は、いったん Tomcat を起動/終了させると、conf フォルダに自動的 に "mod_jk.conf-auto"が作成される。 ⇒ C:¥jakarta-tomcat-3.2.3¥conf¥mod_jk.conf-auto ★ 注意)Tomcat は起動する度に mod_jk.conf-auto を上書きするので、必ず Tomcat を起動してから Apache を起動させる。 (2) Apache の設定ファイル httpd.conf の設定を変更: 次に、これから設定を追加する Apache をインストールしたフォルダの下の conf フォルダにある httpd.conf というファイルのコピーを作り、以下のように mod_jk.conf-auto をインクルードする行を 追加する。(図参照) テキストエディタを使って、今作った httpd.conf ファイルの最後に次の設定を追加する。 Include C:¥jakarta-Tomcat-3.2.3¥conf¥mod_jk.conf-auto ★設定をカスタマイズする場合、mod_jk.conf-auto ファイルは、Tomcat の起動ごとに新規作成される ため、一旦同ファイルを mymod_jk.conf などの適当な名前でコピーし、上記の設定をコピー後のファ イル(mymod_jk.conf など)に対して行なう必要がある。 Apache への接続テスト これまでの設定が全て終わったら、Apache への接続をテストしてみる。 まず、Tomcat を起動、続けて Apache を起動する。 Web ブラウザウを起動し、 http://localhost/examples/jsp/ という URL にアクセスする。 実行結果) ①参考ソースを Tomcat の Webapps ディレクトリにコピーする。 ②Tomcat を単独で起動すると、taiken.wer というアーカイブに入っているサーブレットとJSPが "taiken"という名前のディレクトリとして展開され、Web ブラウザからアクセスできるようになる。 サンプル(サーブレット編)の実行URL サンプル(JSP編)の実行URL http://localhost:8080/taiken/servlet/HelloServlet http://localhost:8080/taiken/hello.jsp ☆「サーバー機の Java 言語にある、サンプル プログラムを Tomcat にコピー ↓ Tomcat を単独で起動→Web ブラウザを開いて http://localhost:8080/taiken/servlet/HelloServ let を入力する。 ↓ 実行後、"Hello Servret!"が表示される。 今回は、JSPで実行する。 ↓ 結果は、"Hello JSP!"と表示される。 実行結果) 実行結果) ★色々なサンプルを実行してみる。 サンプル(サーブレット編)の実行URL http://localhost:8080/taiken/servlet/CounterServlet ⇒ ☆結果は、"カウンタ:(0, 1, 2・・・)"と表示される。 サンプル(JSP編)の実行URL http://localhost:8080/taiken/counter.jsp ⇒ ☆結果は、"カウンタ:(0, 1, 2・・・)"と表示される。 サンプル(サーブレット編)の実行URL http://localhost:8080/taiken/servlet/KeisanServlet ⇒ ☆結果は、"2つの数の計算 □+□=(適切な数と演算子を入力して計算してください)計算する" と表示される。 この実行結果の、問題を作成せよ。 問題:2つの数値をテキストボックスに入力し、四則演算子をセレクトボタンで選択してからコマン ドボタン「計算する」を押すと、内容が送信され結果をラベルに表示するサーブレットを作成せよ。 計算はサーブレットで行い、JSPに送信して、表示はJSPで行なう。