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