2009年10月5日月曜日

第7回 Webサーバーの起動

    Solaris 10 には、ApacheはVersion 1.3.41と2.0.63(以降Apache/1.3.41、Apache/2.0.63)が、Tomcat はVersion 4.0.5と5.5.27(以降Tomcat/4.0.5、Tomcat/5.5.27)が付属している。これらはほんの少しの設定を行うことにより、稼動状態になるようにパッケージングされている。さらに、Tomcat はServlet/JSPの処理を行う「サーブレット・コンテナ」の機能だけではなく、単体でもWebサーバーとして機能するので、Tomcat単体、Apache単体、Apache/1.3.41とTomcat との組み合わせ等、何をWebサーバーとするのかで、多様な選択が可能になっている。

    注 Solaris 10 3/05 Tomcat/5系はインストールされていないので、Tomcat/4系のみを使用する。

    以下rootユーザーから実行する。

  1. Tomcat/4.0.5の単体起動
  2. 下記のように設定ファイルを作成して、Tomcatを起動して、動作確認を行う。

    1. 設定ファイルの作成
    2. Tomcat の動作は設定ファイル「/var/apache/tomcat/conf/server.xml」で制御されるので、同パスにあるテンプレート「server.xml-example」をこれにコピーすることにより作成する。

      # cd /var/apache/tomcat/conf
      # cp -p server.xml-example server.xml

    3. Tomcatの起動
    4. TomcatはJava環境上で動作するので、Java環境の位置「JAVA_HOME」と、起動するTomcatの位置「CATALINA_BASE」を環境変数に定義して、「startup.sh」で起動させる。停止は「shutdown.sh」である。

      # JAVA_HOME=/usr/java; export JAVA_HOME
      # CATALINA_BASE=/var/apache/tomcat; export CATALINA_BASE
      # /usr/apache/tomcat/bin/startup.sh
          …
      # /usr/apache/tomcat/bin/shutdown.sh

    5. 動作確認
    6. Tomcatは起動するとserver.xmlで設定したポート8080でリスニングして待機状態であるので、クライアントのブラウザーからはURLに「http:// server_addr :8080」を指定して、HTTPリクエストをWebサーバーであるTomcatに送信すると、HTTPレスポンスの返信であるTomcat Version 4.0.5の画面が表示される。ここから「JSP Examples」、「Servlet Examples」をクリックして、それぞれのメニューからJSP・Servletのプログラムをクリックすると「サーブレット・コンテナ」としてのTomcatの動作確認ができる。

      Screen   94

  3. Tomcat/5.5.27の単体起動
  4. 下記のように設定ファイルを作成して、Tomcatを起動して、動作確認を行う。

    「apache」配下の「tomcat」ディレクトリには、Tomcat Version 4.0.5関連が入っている。その隣に「tomcat55」ディレクトリにはVersion 5.5.27関連が入っている。両ディレクトリは対称性があるため、起動方法はVersion 4.0.5と同じで、パスに「tomcat」とある場合はそれを、「tomcat55」と読み替えればよい。

    1. 設定ファイルの作成
    2. # cd /var/apache/tomcat55/conf
      # cp -p server.xml-example server.xml

    3. Tomcatの起動
    4. # JAVA_HOME=/usr/java; export JAVA_HOME
      # CATALINA_BASE=/var/apache/tomcat55; export CATALINA_BASE
      # /usr/apache/tomcat55/bin/startup.sh
          …
      # /usr/apache/tomcat55/bin/shutdown.sh

    5. 動作確認
    6. Screen   94

    7. Webアプリケーションマネージャ用ユーザの追加
    8. 画面左上にある「Administration」メニューにある項目へのアクセスするユーザーは下表のロールが必要である。

      表96
      Administration roles
      Status manager
      Tomcat Administration admin
      Tomcat Manager manager

      このために、ユーザー情報の設定ファイル「/var/apache/tomcat55/conf/tomcat-users.xml」を編集し、ユーザーの追加を行う。下記の例ではユーザー名:aaa、パスワード:bbbによって設定ファイルの編集を行った。編集が終了したら、shutdown.sh、startup.shコマンドによって再起動すれば設定が有効になる。

      1. 「/var/apache/tomcat55/conf/tomcat-users.xml」を編集する。
      2. # cd /var/apache/tomcat55/conf
        # cp -p tomcat-users.xml tomcat-users.xml.org
        # vi tomcat-users.xml

      3. </tomcat-users>の前に追加する。
      4. <tomcat-users>
        ・・・
          <role rolename="admin"/>
          <role rolename="manager"/>
          <user username="aaa" password="bbb" roles="admin,manager"/>
        </tomcat-users>

        Screen   95

      5. shutdown.sh、startup.shコマンドによって再起動して設定を有効にする。
      6. # /usr/apache/tomcat55/bin/shutdown.sh
            …
        # /usr/apache/tomcat55/bin/startup.sh

  5. Apache/1.3.41の単体起動
  6. 下記のように設定ファイルを作成して、Apacheを起動して、動作確認を行う。

    1. 設定ファイルの作成
    2. Apache/1.3.41の動作は設定ファイル「/etc/apache/httpd.conf」によって制御されるので、同パスにあるテンプレート「httpd.conf-example」をこれにコピーすることにより作成する。

      # cd /etc/apache
      # cp -p httpd.conf-example httpd.conf

    3. Apacheの起動
    4. Apache/1.3.41の起動、停止は下記コマンドにオプションを付けて行う。起動は「start」、停止は「stop」である。
      /usr/apache/bin/apachectl

      # /usr/apache/bin/apachectl start
          …
      # /usr/apache/bin/apachectl stop

    5. 動作確認
    6. ブラウザで下記のURLを指定する。

      http:// server_addr

  7. Apache/2.0.63の単体起動
  8. 下記のように設定ファイルを作成して、Apacheを起動して、動作確認を行う。

    1. 設定ファイルの作成
    2. Apache/2.0.63の動作は設定ファイル「/etc/apache2/httpd.conf」によって制御されるので、同パスにあるテンプレート「httpd.conf-example」をコピーすることにより作成する。

      # cd /etc/apache2
      # cp -p httpd.conf-example httpd.conf

    3. Apacheの起動
    4. Apache/1.3.41の起動、停止はsvcadmコマンドでサービスの起動、停止をするという形を取る。起動は「enable」、停止は「disable」である。

      # svcadm enable apache2
          …
      # svcadm disable apache2

    5. 動作確認
    6. ブラウザで下記のURLを指定する。

      http:// server_addr

  9. Apache/1.3.22とTomcat/4.0.5の連携
  10. Apache、Tomcatの連携させるためには、Apache側では両者間を中継する拡張モジュールが必要になる。これをコネクタ(Web Server Connector)、またはアダプタ(Web Server Adapter)と呼び、Apache/1.3.22では下記のライブラリが用意されている。

    /usr/apache/libexec/mod_webapp.so
    /usr/apache/libexec/mod_jk.so
    /usr/apache/libexec/mod_jserv.so

    コネクタは、クライアントのブラウザがApacheに投げたHTTPリクエストのURLのパスが、設定したパターンがと一致するときに、ファイルシステムのパスにマップし、中継ポートを経由して、「mod_webapp」はWARP/1.0プロトコル、「mod_jk」はAJP(Apache JServ Protocol)/1.3プロトコル、「mod_jserv」はAJP/1.2プロトコルでTomcatにスルーする。すなわちフロントエンドにApacheを立てて、バックエンドにTomcatを設置した、Webサーバーとアプリケーションサーバーの連携プレーが可能になるのだ。

    Apache/1.3.22はTomcat/4.0.5との連携のコネクタに、「mod_webapp」を使用する。その際の処理は下記の設定ファイルによって制御されるので、設定状態の確認をして、必要ならば修正をする。

    /etc/apache/httpd.conf
    /etc/apache/tomcat.conf

    1. httpd.confの修正
    2. まずテンプレートをコピーして作成する。次にviにより、Includeディレクティブ行をコメントインして、ここにtomcat.confファイルを読み込むようにする。これによりhttpd.confの設定に続いてtomcat.confの設定が行われる。

      # cd /etc/apache
      # cp -p httpd.conf-example httpd.conf
      # vi httpd.conf

      ファイル末尾に「:$」で移動して、コメントインする。

      #include /etc/apache/tomcat.conf
        ↓
      include /etc/apache/tomcat.conf

    3. tomcat.confの修正(修正の必要なし、参考まで)
    4. デフォルトでコネクタはmod_webappを使用するように設定されているので、修正の必要はない。現状で下記のように定義されている。 (「LoadModule」ディレクティブで起動時に「mod_webapp」のmod_webappのダイナミックリンクライブラリをロードさせ、「AddModule」ディレクティブでソースコードを指定している。)

      LoadModule webapp_module libexec/mod_webapp.so
      AddModule mod_webapp.c

      Apache起動時に次のエラーが表示されるが、連携に支障はない。
      [warn] module mod_webapp.c is already added, skipping

      気になる場合は、ディレクティブをhttpd.confに移動させ、tomcat.confからはコメントアウトする。httpd.confへはLoadModuleとAddModuleの記述のそれぞれの末尾に追加する。そうすると正規のシークエンスで、すなわち一旦ClearModuleListによってモジュールの一覧をクリアした後にAddModuleで追加するのでエラーは発生しなくなる。


      下記のディレクティブ書式と現状の設定内容
      WebAppConnection conn warp localhost:8008
      WebAppDeploy examples  conn /examples/

      • 「WebAppConnection」
      • WebAppConnection [connection name] [provider] [host:port]

        すなわち、Apache、Tomcat間の接続に「conn」という名前をつけ、プロバイダーには「warp」を使用して、自サーバーの8008番ポートに接続する。

      • 「WebAppDeploy」
      • WebAppDeploy [application name] [connection name] [url path]

        すなわち、「conn」という名前の接続は、URLパターンが/examples/に一致したら、それをデプロイ先の/var/apache/tomcat/webapps/examplesにリダイレクトする。

    5. Tomcat側コネクタの設定
    6. Tomcat側では先に行った「Tomcat/4.0.5の単体起動」のようにserver.xml をテンプレートからコピーするだけでよい。Tomcatが起動すればWarpConnectorが待ち受けている。

      # cd /var/apache/tomcat/conf
      # cp -p server.xml-example server.xml

      server.xmlのConnectorタグの属性の意味は下記のとおりである。

      属性
      className インプリメントされているクラス名
      port サーバーソケットを形成して、待機しているTCPポート番号
      minProcessors コネクタが起動するとき作成するスレッド数
      maxProcessors 同時に受け付けたリクエストを処理するスレッド数の最大値
      enableLookups ホスト名をDNSから引くかどうか
      appBase アプリーケーションのベースディレクトリ
      acceptCount 接続リクエストの待ち行列の最大値。
      debug デバッグレベル

      server.xmlの記述は下記のようになっている。したがって、Tomcatが立ち上がった状態では8008番ポートにWARP 1.0プロトコルのメッセージが到着するのをリッスンしている。

      <Connector
      className="org.apache.catalina.connector.warp.WarpConnector"
      port="8008"
      minProcessors="5"
      maxProcessors="75"
      enableLookups="true"
      appBase="webapps"
      acceptCount="10"
      debug="0"
      />

    7. Tomcat、Apacheの起動
    8. Tomcat、Apacheの起動はすでに組み込まれているrcスクリプトを使用する。下記のシェルスクリプトは名前こそ違っているがハードリンクが張られていて、ノード先の実体のコードは同じものであり、引数に「start」を付ければ起動、引数に「stop」を付ければ停止する処理が書かれている。

      /etc/init.d/apache
      /etc/rc0.d/K16apache
      /etc/rc1.d/K16apache
      /etc/rc2.d/K16apache
      /etc/rc3.d/S50apache
      /etc/rcS.d/K16apache

      上記のスクリプトは、これまでにTomcat、Apacheの単体起動で説明してきたのと同様に下記の「httpd.conf」、「server.xml」ファイルの有無と、その内容によって制御される。「server.xml」が存在すればその内容によってtomcatの起動、停止を行い、「httpd.conf」は同じようにApacheの制御をする。

      なお、Tomcat/4.0.5用とTomcat/5.5.27用のserver.xmlが同時にある場合は、Tomcat/5.5.27が優先されて起動する。したがって前作業によって「/var/apache/tomcat55/conf/server.xml」が残っているならば削除する。

      /etc/apache/httpd.conf
      /var/apache/tomcat/conf/server.xml (Tomcat/4.0.5)
      /var/apache/tomcat55/conf/server.xml (Tomcat/5.5.27)

      rcスクリプトはランレベルが推移したときに、実行するのでシステムの起動と終了とTomcat、Apacheは同期して、自動起動と自動終了する。手動では、次のようにスクリプトに「start」引数を加えてタイプすればTomcat、apacheが起動して、「stop」引数を加えてタイプすれば終了する。

      # /etc/init.d/apache start
      # /etc/init.d/apache stop

    9. 動作確認
    10. これまでは直接Tomcat の8080ポートを指定して JSP、サーブレットのサンプル画面へ入っていたが、上記の「stop」と、「start」の操作をしてTomcat、Apacheを再起動した後は連携が有効になり、下記8080ポートの指定不要なURLの指定によって、ApacheからTomcatの「JSP Examples」、「Servlet Examples」へ入れるようになる。

      http:// server_addr /examples/jsp
      http:// server_addr /examples/servlets

  11. Apache/1.3.22とTomcat/5.5.27の連携
  12. 「Apache/1.3.22とTomcat/4.0.5の連携」と同じように「/etc/apache/httpd.conf」を修正する。これはすでに修正済みのはずなので省略する。「/etc/apache/tomcat.conf」はコネクタが「mod_webapp」に既定されているので、これを「mod_jk」に変更する。

    1. tomcat.confのバックアップをとる。
    2. /etc/apacheディレクトリに移動して、「tomcat.conf.org」の名前でバックアップをとり、viで「tomcat.conf」の編集に入る。

      # cd /etc/apache
      # cp -p tomcat.conf tomcat.conf.org
      # vi tomcat.conf

    3. tomcat.confの編集
    4. コメントアウトするのは「mod_webapp」の定義、コメントインするのは「mod_jk」の定義である。網伏せの部分が修正した結果になる、すなわちコメントインされている場合はコメントアウト、コメントアウトされている場合はコメントインして、同名(:w)でセーブする。なお末尾の「JkMount  /jsp-examples/* worker1」の行は原文にはない、追記する。

      #
      # Tomcat configuration file for apache - uses mod_webapp
      # as the connector.  Tomcat must already be running and listening
      # on port 8008 before apache starts.  This is typically handled
      # by the S50apache startup script.
      #
      # This file should be 'include'd by the main apache config file.
      #
      # Load warp connector module
      #
      #LoadModule webapp_module     libexec/mod_webapp.so
      #AddModule mod_webapp.c
      #
      # Describe connections and contexts - default to examples only
      #
      #WebAppConnection     conn    warp  localhost:8008
      #WebAppDeploy  examples     conn  /examples/
      #
      # Connector information - off by default for security reasons
      #
      # WebAppInfo  /webapp-info
       
      #
      # When Apache Tomcat 5.5 is used mod_jk module has to be used instead
      # of mod_webapp. In such case comment out above lines and uncomment
      # and modify lines bellow.
      #
       
      LoadModule jk_module  libexec/mod_jk.so
       
      # You will need to create a file with worker definition with similar
      # contents (e.g. /etc/apache/workers.properties):
      #
      # worker.list=worker1
      # worker.worker1.type=ajp13
      # worker.worker1.host=localhost
      # worker.worker1.port=8009
       
      JkWorkersFile /etc/apache/workers.properties
      JkShmFile  /var/apache/logs/mod_jk.shm
      JkLogFile  /var/apache/logs/mod_jk.log
      JkLogLevel    info
      JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
      JkMount    /servlets-examples/* worker1
      JkMount    /jsp-examples/* worker1

      「tomcat.conf」には下記の項目を設定した。
      JkWorkersFile:ワーカの定義ファイルのパスネーム
      JkShmFile:共有メモリファイルのパスネーム
      JkLogFile:ログファイルのパスネーム
      JkLogLevel:ログレベル
      JkLogStampFormat:日付/時刻フォーマット
      JkMount:Tomcatのワーカに転送するURLパス。書式は次のとおり。
      JkMount <URL prefix> <Worker name>

    5. workers.propertiesの作成
    6. 網伏せの部分はコメントインして、他の部分は削除して、別名(:w workers.properties)でセーブして、viを終了する。

          …
      削除
      worker.list=worker1
      worker.worker1.type=ajp13
      worker.worker1.host=localhost
      worker.worker1.port=8009
      削除
          …

      ワーカの定義ファイル「workers.properties」には下記の項目を設定した。
      worker.list <ワーカ名>:ワーカ名のリスト
      worker.<ワーカ名>.type:ワーカのタイプ
      worker.<ワーカ名>.host:接続するホスト名
      worker.<ワーカ名>.port:接続するポート番号

    7. Tomcat側コネクタの設定
    8. Tomcat側では先に行った「Tomcat/5.5.27の起動方法」のようにserver.xml をテンプレートからコピーするだけでよい。Tomcaが起動すればAJP/1.3プロトコルの受信を始める。

      # cd /var/apache/tomcat55/conf
      # cp -p server.xml-example server.xml

      参考 server.xmlの記述は下記のようになっている。したがって、Tomcatが立ち上がった状態では8009番ポートにAJP/1.3プロトコルのメッセージが到着するのをリッスンしている。
         <!-- Define an AJP 1.3 Connector on port 8009 -->
          <Connector port="8009"
           enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

    9. Tomcat、Apacheの起動
    10. これはApache/1.3.22とTomcat/4.0.5に同じなので参照されたい。

    11. 動作確認
    12. 「JSP Examples」、「Servlet Examples」のURLは下記のようになる。

      http:// server_addr /jsp-examples/
      http:// server_addr /servlets-examples/

  13. Apache/2.0.63とTomcat/5.5.27の連携
  14. Apacheのプロキシ機能を使用してTomcatと連携する。httpd.confに連携に使用する必要なモジュール(mod_proxy_http, mod_proxy_ftp, mod_proxy, mod_proxy_connect)はすでにロードするように定義済みなので、ProxyPass ディレクティブを追加するだけでよい。

    1. httpd.confの修正
    2. viにより、ProxyPass ディレクティブを追加する。

      # cd /etc/apache
      # vi httpd.conf

      ファイル末尾に「:$」で移動して、次の2行を追加する。

      proxypass /jsp-examples/ http://localhost:8080/jsp-examples/
      proxypass /servlets-examples/ http://localhost:8080/servlets-examples/
    3. Tomcat、Apacheの起動
    4. これはApache/2.0.63とTomcat/5.5.27に同じなので参照されたい。

    5. 動作確認
    6. 「JSP Examples」、「Servlet Examples」のURLは下記のようになる。

      http:// server_addr /jsp-examples/
      http:// server_addr /servlets-examples/
    7. rcスクリプトからの起動
    8. apache用のrcスクリプト(/etc/init.d/apache)を下記の網伏せ部分のように編集してapache2に対応させる。

      #!/sbin/sh
      #
      # Copyright 2008 Sun Microsystems, Inc. All rights reserved.
      # Use subject to license terms.
      #
      #ident "@(#)apache.sh 1.6 08/04/04 SMI"

      CONF_FILE=/etc/apache2/httpd.conf
      if [ -f ${CONF_FILE} ]; then
      APACHE_HOME=/usr/apache2
      RUNDIR=/var/run/apache2
      CF=`egrep '^[ \t]*proxypass[ \t]' $CONF_FILE`
      else
      APACHE_HOME=/usr/apache
      CONF_FILE=/etc/apache/httpd.conf
      RUNDIR=/var/run/apache
      CF=`egrep '^[ \t]*include[ \t]*/etc/apache/tomcat.conf' $CONF_FILE`
      fi
      PIDFILE=${RUNDIR}/httpd.pid
      TOMCAT_CF=/var/apache/tomcat/conf/server.xml
      TOMCAT55_CF=/var/apache/tomcat55/conf/server.xml

      if [ ! -f ${CONF_FILE} ]; then
      exit 0
      fi

      if [ ! -d ${RUNDIR} ]; then
      /usr/bin/mkdir -p -m 755 ${RUNDIR}
      fi

      # see if we need to start/stop tomcat also

      if [ -n "$CF" -a -f $TOMCAT55_CF ]; then
      TOMCAT=yes55
      TC_USER=`egrep '^[ \t]*User[ \t]' $CONF_FILE | nawk '{print $2}'`
      elif [ -n "$CF" -a -f $TOMCAT_CF ]; then
      TOMCAT=yes
      TC_USER=`egrep '^[ \t]*User[ \t]' $CONF_FILE | nawk '{print $2}'` 
      else
      TOMCAT=no
      fi
      TC_USER=`echo $TC_USER|awk '{print $1}'`

      case "$1" in
      start|startssl|sslstart|start-SSL)
      /bin/rm -f ${PIDFILE}
      cmdtext="starting"
      if [ "x$TOMCAT" = xyes55 ]; then
      (CATALINA_HOME=/usr/apache/tomcat55; export CATALINA_HOME; \
      CATALINA_BASE=/var/apache/tomcat55; export CATALINA_BASE; \
      JAVA_HOME=/usr/java; export JAVA_HOME; \
      /bin/su $TC_USER -c \
      "$CATALINA_HOME/bin/startup.sh") \
      >/dev/null 2>&1
      elif [ "x$TOMCAT" != xno ]; then
      (CATALINA_HOME=/usr/apache/tomcat; export CATALINA_HOME; \
      CATALINA_BASE=/var/apache/tomcat; export CATALINA_BASE; \
      JAVA_HOME=/usr/java; export JAVA_HOME; \
      /bin/su $TC_USER -c \
      "$CATALINA_HOME/bin/startup.sh") \
      >/dev/null 2>&1
      fi
      ;;
      restart)
      cmdtext="restarting"
      ;;
      stop)
      cmdtext="stopping"
      if [ "x$TOMCAT" = xyes55 ]; then
      (CATALINA_HOME=/usr/apache/tomcat55; export CATALINA_HOME; \
      CATALINA_BASE=/var/apache/tomcat55; export CATALINA_BASE; \
      JAVA_HOME=/usr/java; export JAVA_HOME; \
      /bin/su $TC_USER -c \
      "$CATALINA_HOME/bin/shutdown.sh") \
      >/dev/null 2>&1
      elif [ "x$TOMCAT" != xno ]; then
      (CATALINA_HOME=/usr/apache/tomcat; export CATALINA_HOME; \
      CATALINA_BASE=/var/apache/tomcat; export CATALINA_BASE; \
      JAVA_HOME=/usr/java; export JAVA_HOME; \
      /bin/su $TC_USER -c \
      "$CATALINA_HOME/bin/shutdown.sh") \
      >/dev/null 2>&1
      fi
      ;;
      *)
      echo "Usage: $0 {start|stop|restart}"
      exit 1
      ;;
      esac

      echo "httpd $cmdtext."

      /bin/sh -c "${APACHE_HOME}/bin/apachectl $1" 2>&1 &
      status=$?

      if [ $status != 0 ]; then
      echo "exit status $status"
      exit 1
      fi
      exit 0
    9. ファイル所有者の変更
    10. rcスクリプトを見れば分かるように、httpd.confにApacheの実行ユーザーが定義されている。 Apacheはnobodyであり、apache2はwebservdである。このため/var/apache/tomcat55以下のnobodyユーザーのディレクトリを調べて、webservdユーザーに変更する。

      # find /var/apache/tomcat55 -user nobody
          …
      # find /var/apache/tomcat55 -user nobody|xargs chown -R webservd

  15. JSPでのOracleへの接続
  16. これまでのどの方法でも良いから、Tomcat を起動することが出来たら、JSPまたはServletによってOracleへの接続が可能になる。Oracleデータベースに接続して、DBアクセスの結果を表示する、ごく簡単なJSPを例示する。

    1. JDBCドライバのコピー
    2. Oracleへ接続するためには、まずJDBCドライバをTomcat にロードさせなければならない。JDBCドライバは/opt/app/oracle/product/10.2.0/jdbc/lib/配下に下記のものが置かれている。

      • JDK 1.4 / 5.0
      •  ojdbc14.jar JDBCクラス
         ojdbc14_g.jar JDBCクラス(デバッグ、トレース)
         ojdbc14dms.jar JDBCクラス - Dynamic Monitoring Serviceサポート
         ojdbc14dms_g.jar JDBCクラス(デバッグ、トレース) - Dynamic Monitoring Serviceサポート

      • JDK 1.2 / 1.3
      • classes12.jar JDBCクラス
        classes12dms.jar JDBCクラス - Dynamic Monitoring Serviceサポート

      既にインストールされているJavaのバージョンは、1.5系なのでojdbc14系が最適であり、そのうち軽量、シンプルな「ojdbc14.jar」を使用する。

      • Tomcat/5.5.27の場合には/jsp-examples/WEB-INF/lib以下にコピーして、Tomcatユーザ(nobody:apacheから起動がかかるのでそれと同じユーザー)がロードできるように読み取り権限を付与することに注意。
      • # cd /var/apache/tomcat55/webapps/jsp-examples/WEB-INF/lib
        # cp /opt/app/oracle/product/10.2.0/jdbc/lib/ojdbc14.jar .
        # chmod o+r ojdbc14.jar

      • Tomcat/4.0.5の場合には「/var/apache/tomcat/webapps/examples/WEB-INF/lib」ディレクトリを作成してコピーする、他はTomcat/5.5.27とじ。
      • # mkdir -p /var/apache/tomcat/webapps/examples/WEB-INF/lib
        # cd /var/apache/tomcat/webapps/examples/WEB-INF/lib
        # cp /opt/app/oracle/product/10.2.0/jdbc/lib/ojdbc14.jar .
        # chmod o+r ojdbc14.jar

    3. JSPの作成
    4. 「USER_TABLES」から「TABLE_NAME」を読み取りそれを表示するJSPを作成する。出来るだけ短くするために、クローズ処理さえも省いたが、目的には十分である。ファイルパスは下記のとおり。

      • Tomcat/5.5.27・・・/var/apache/tomcat55/webapps/jsp-examples/db.jsp
      • Tomcat/4.0.5・・・/var/apache/tomcat/webapps/examples/jsp/db.jsp

      <%@ page language="java" pageEncoding="Windows-31J" contentType="text/html;charset=Windows-31J" %>
      <%@ page import="java.sql.*" %>
      <%
      try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        String url = "jdbc:oracle:thin:@localhost:1521:orcl";
        Connection con = DriverManager.getConnection(url,"scott", "tiger");
        Statement stmt = con.createStatement();
        String sql = "select table_name from user_tables";
        ResultSet rs = stmt.executeQuery(sql);
        while(rs.next()){
          out.println(rs.getString("TABLE_NAME")+"<br> ");
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
      %>
         

    5. 動作確認
    6. ブラウザで下記のURLを指定する。

      (Tomcat単体起動の場合はserver_addr:8080)
      Tomcat/4.0.5・・・「http://server_addr/examples/jsp/db.jsp」
      Tomcat/5.5.27・・・「http://server_addr/jsp-examples/db.jsp」
      Screen   97

0 件のコメント:

コメントを投稿