JNDIサンプルコード

目的

  • JNDIを使ったデータベースプログラムを習作する。
  • IDEとしてEclipseを使う。
  • アプリケーションサーバとしてTomcatを使う。
  • DBサーバとしてMySQLを使う。

MySQLサーバの登録

  • Eclipseを起動する。
  • メニューより[Window] -> [Show View] -> [Servers]を選ぶ。
  • Serversビューを選ぶ。
  • [Tomcat v7.0 Server...]が登録されている事を確認する。なければ、右クリックして[New] -> [Server]を選び、登録する。

JNDIプログラム

プロジェクトの作成

  • Eclipseを起動する。
  • ProjectExplorerを右クリックして[New] -> [Project...]を選ぶ。
  • [Web] / [Dynamic Web Project]を選び、[Next]を押下する。
  • 以下のように設定する。
    • [Project name] mywebapp
    • [Target runtime] Apache Tomcat v7.0
  • [Finish]を押下する。

JNDIリソースの設定

  • ProjectExplorerからmywebappプロジェクトを選ぶ。
  • プロジェクト配下のWebContent/META-INFを右クリックして[New] -> [File]を選ぶ。
  • [File name]をcontext.xmlと入力し、[Finish]を押下する。
  • context.xmlを開き、以下のように編集する。
<?xml version="1.0" encoding="UTF-8"?>
<Context>
   <Resource name="jdbc/mydatabase" 
             auth="Container"
             type="javax.sql.DataSource" 
             username="db_user" 
             password="db_passwd"
             driverClassName="com.mysql.jdbc.Driver"
             url="jdbc:mysql://my-db-server/mydb01?autoReconnect=true"
             validationQuery="select 1"
             maxActive="10" 
             maxIdle="4"/>
</Context>

サーブレットの作成

  • プロジェクト配下のJava Resources/srcを右クリックして[New] -> [Servlet]を選ぶ。
  • 以下のように設定する。
    • [Java package] jp.sample.app
    • [Class name] HelloWorld
  • [Finish]を押下する。
  • HelloWorld.javaを開き、doGet()を以下のように編集する。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("DEBUG: TEST");
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html><body>THIS IS A TEST.</body></html>");

    try {
        //Class.forName("com.mysql.jdbc.Driver").newInstance();
        //Connection conn = DriverManager
        // .getConnection("jdbc:mysql://my-db-server/mydb01?" + "user=db_user&password=db_passwd");
        Context ctx = new InitialContext();
        DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mydatabase");
        Connection conn = ds.getConnection();
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM t1");
        while (rs.next()) {
            int id =- rs.getInt("id");
            System.out.println("ID: " + id);
        }
    } catch (Exception e) {
        System.out.println(e.toString());
    }
}

動作確認

  • HelloWorld.javaを右クリックして[Run As] -> [Run on Server]を選ぶ。
  • ブラウザの表示、コンソールの表示を確認する。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2012-09-26 (水) 18:17:18 (2630d)