SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

Oracle9i + Servlet、JSP 編1 - Servlet JDBC アクセス、getConnection

■Oracle9i + JDBC、JAVA Servlet アクセス

  ・Oracle9i の JDBC ドライバは、j:/oracle/ora90/jdbc/lib/ にある。
    classes12 セットを使用してテストする。
    ドライバの配置は、次のようにした。

c:/cygnus/jakarta-tomcat-3.3.1/webapps/sak/WEB-INF/lib/classes12.jar

  ・CLASSPATH は、次のようにした。
    尚、Cygwin B20 では、「"」で囲まないと「;」でエラーになる。
    また、普通のパスは、Cygwin B20 では「:」で区切るが、CLASSPATH は、
    DOS と同じく「;」でかつ、「c:/...」のようにシステムパスから指定する
    必要がある。

export CLASSPATH=".;c:/cygnus/jakarta-tomcat-3.3.1/lib/common/servlet.jar;c:/cygnus/jakarta-tomcat-3.3.1/webapps/sak/WEB-INF/lib/classes12.jar"

  ・Oracle のファイルシステムをマウントする。
    尚、単に環境変数定義を楽にするためにマッピングしただけである。

mount -f j:/oracle/ora90 /oracle

Device           Directory           Type        Flags
c:\cygnus\cygwin-b20\share /sw/cygwin-b20/share    native      text!=binary
g:\tmp           /src                native      text!=binary
j:\oracle\ora90  /oracle             native      text!=binary
c:\cygnus        /                   native      text!=binary

  ・.bashrc に Oracle 環境変数を追加定義する。
    尚、修正後に「source /.bashrc」と実行するか、Cygwin B20 を再起動する
    必要がある。

export HOME=/
export PATH=/j2sdk/bin:/usr/local/mysql/bin:/usr/local/perl/bin:$PATH:/usr/local/pgsql/bin:/usr/local/bin:/usr/local/apache:/oracle/BIN
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=/usr/local/pgsql/lib
export PGDATA=/usr/local/pgsql/data
export LD_LIBRARY_PATH=/usr/local/pgsql/lib:/usr/local/lib:/oracle/LIB
export TOMCAT_HOME=c:/cygnus/jakarta-tomcat-3.3.1
export JAVA_HOME=/j2sdk
export CLASSPATH=".;c:/cygnus/jakarta-tomcat-3.3.1/lib/common/servlet.jar;c:/cygnus/jakarta-tomcat-3.3.1/webapps/sak/WEB-INF/lib/classes12.jar"
cd
ls -aF

  ・Oracle は、OracleServiceSAK と OracleOraHome90TNSListener のサービス
    が開始されている必要がある。
    尚、Oracle では、致命的なアクセスエラーなどが発生すると、
    Tomcat のサービスが異常終了したり、起動時エラーが発生する。
    もし、異常が発生したら、
      1. Tomcat を終了させる。
      2. ps で、/j2sdk/bin/java.exe の PID を kill する。(既にない場合もある)
      3. OracleOraHome90TNSListener サービス を再起動する。
      4. Tomcat を起動する。
    で確実に回復する。
    また、「Not Found (404)」や Tomcat の起動時にずらずらっとエラーが
    出る場合も、同様な状態になっいる可能性が高い。
    上記の手順で Oracle に関係する障害であれば回復できる。
    (タイムアウトの設定でもあるのだろうか...)

  ・上記障害は、Cygwin 2.05b、Cygipc 1.11.1、JAVA2 SDK 1.4.0 で、発生しな
    くなった。うれしい〜。

■Oracle9i + JDBC、JAVA Servlet アクセステスト

  ・サーブレット(JAVA Servlet) から、JDBC で Oracle9i にアクセスする
    には、次のようにする。

// test_oracle.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class test_oracle extends HttpServlet {

  public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {

    // HTML ヘッダ出力
    PrintWriter rw = res.getWriter();
    rw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">");
    rw.println("<HTML>");
    rw.println("<HEAD>");
    rw.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">");
    rw.println("<TITLE>JAVA Servlet - Oracle9i JDBC Test</TITLE>");
    rw.println("</HEAD>");
    rw.println("<BODY>");
    rw.println("<P>JAVA Servlet - Oracle9i JDBC Test</P>");

    try {

      // Oracle9i JDBC ドライバロード
      Class.forName("oracle.jdbc.OracleDriver");

      // Oracle9i JDBC 接続
      String dsn = "jdbc:oracle:thin:@sak-design:1521:sak";
      Connection cn = DriverManager.getConnection(dsn, "sak", "sak");

      // Oracle9i JDBC 問い合わせ SQL 作成
      String sql = "select * from seqm";
      Statement st = cn.createStatement();

      // Oracle9i JDBC レコードセットオープン
      ResultSet rs = st.executeQuery(sql);

      // Oracle9i JDBC レコードセットリード
      while (rs.next()) {
        rw.println("<P>" + rs.getString(1) + "</P>");
      }

      // Oracle9i JDBC レコードセットクローズ
      rs.close();

      // Oracle9i JDBC ステートメントクローズ
      st.close();

      // Oracle9i JDBC 接続クローズ
      cn.close();

    }
    catch (Exception e) {

      // エラー処理
      rw.println("<P>error</P>");

    }

    // HTML テイル出力
    rw.println("</BODY>");
    rw.println("</HTML>");

  }

}

  ・JAVA ソースは、次のようにコンパイルして、test_oracle.class を作成する。

cd /src
javac test_oracle.java

  ・Servlet(test_oracle.class) は、
    /jakarta-tomcat-3.3.1/webapps/sak/WEB-INF/classes/ の中に配置し、
    ブラウザより、次の URL で実行する。

http://sak-design:8080/sak/servlet/test_oracle

■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK