• 検索結果がありません。

Microsoft PowerPoint - 3-MySQL50_JDBC.ppt

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - 3-MySQL50_JDBC.ppt"

Copied!
37
0
0

読み込み中.... (全文を見る)

全文

(1)

MySQL 5.0

MySQL 5.0

MySQL 5.0

MySQL 5.0 JDBC

JDBC

JDBC

JDBCドライバ

ドライバ

ドライバ

ドライバ基礎

基礎

基礎

基礎

Tomcat/

Tomcat/

Tomcat/

Tomcat/

JBossAS

JBossAS

JBossAS

JBossAS

からの

からの

からの

からの接続方法

接続方法

接続方法

接続方法

日本ヒューレットパッカード株式会社

オープンソース・コンピテンシ・センター

(2)

目次

JDBC

J2EEサーバからMySQLへの接続方法

Tomcat

JBossAS

付録

Javaのインストール手順

Tomcatのインストール手順

JBossASのインストール手順

(3)

概観 : J2EEサーバからMySQLの利用

コネクション

JDBC API Connector/J

コネクション

JDBC API Connector/J

コネクション

JDBC API Connector/J

コネクションプール

コネクションプール

コネクションプール

コネクションプール

MySQL

JNDI

Java

アプリケーション

(JSP/Servlet..etc)

J2EEサーバー

設定ファイル

JDBCドライバライブラリ

(Connector/Jのjar)

DataSource

JDBC API Connector/J 1. DataSourceを検索 2. コネクションを要求 コネクションを作成 3. SQL文送信 準備1. JDBCドライバをインス トール 準備2. DataSource/コネクショ ンプールの設定 3. SQL文送信 接続 接続 接続 4. クローズ

(4)

目次

JDBC

J2EEサーバからMySQLへの接続方法

Tomcat

JBossAS

付録

Javaのインストール手順

Tomcatのインストール手順

JBossASのインストール手順

(5)

DB

Java

アプリケーション

Javaの

の世界

世界

世界

世界

まずJDBC

JavaアプリケーションからRDBMSに接続するにはJDBCを使う

JDBCとはJavaとRDBMSを繋ぐ仕組み

Tomcat/JBossASは一種のJavaアプリケーション

MySQLはRDBMS

JDBC

Tomcat/JBossASから

から

からMySQLに

から

に接続

接続

接続するには

接続

するには

するには

するには

JDBCを

を使用

使用

使用

使用する

する

する

する

(6)

JDBC/JDBCドライバとは?

JDBC

とは、JavaからRDBMSへの接続やSQL文を処理する

ための「API」、「インターフェース」。つまり、

仕様

仕様

仕様

仕様

JDBCドライバ

ドライバ

ドライバ

ドライバ

とは、JDBCで決められた「インターフェース」を

特定のRDBMS用向けに

実装

実装

実装

実装

したもの。

通常はRDBMSベンダが実装、提供する

DB

Java

アプリケーション

JDBC

API

仕様

仕様

仕様

仕様

Javaの

の世界

世界

世界

世界

JDBC

ドライバ

実装

実装

実装

実装

JDBCのメリット

Javaアプリケーション側から、特定のRDBMSを意識する必要がなくなる

(7)

Connector/J

(こねくたー じぇい)

MySQL用のJDBCドライバがConnector/J

MySQL AB(MySQL社)が提供

最新公式版はConnector/J 5.0

JDBC 3.0 仕様準拠

Type 4 JDBCドライバ(Pure Javaで実装されている)

もちろんオープンソース

「GPL」と「商用」のデュアルライセンス

MySQL

Java

アプリケーション

JDBC

API

Javaの

の世界

世界

世界

世界

Connector/J

(8)

JDBCを使ったDB接続の実際:

コネクション

コネクション

Java

DataSource

JDBC API JDBCドライバ 1. コネクションを要求 2. コネクション作成

DB



実際にJavaアプリケーションからJDBCを使用してRDBMSにアクセスするには、

1.

Javaアプリケーションが、DataSourceに対して、コネクション

コネクション

コネクション

コネクション(java.sql.Connection)を要



コネクションとは実際にRDBMSに接続するJavaオブジェクト

2.

DataSourceがコネクション

コネクション

コネクションを

コネクション

を作成

作成

作成

作成



この時点でコネクションがRDBMSへ接続する

3.

Javaアプリケーションはコネクション

コネクション

コネクションを

コネクション

を利用

利用

利用

利用して

して、

して

して

、RDBMSに

にアクセス

アクセス

アクセス

アクセス

4.

RDBMSへのアクセス終了後、コネクション

コネクション

コネクション

コネクションを

をクローズ

クローズし

クローズ

クローズ

し破棄

破棄

破棄

破棄

3. SQL文送信



コネクション

コネクション

コネクション

コネクションの

の作成

作成、

作成

作成

、破棄

破棄

破棄

破棄に

にコスト

コストが

コスト

コスト

が掛

掛かる

かる

かる

かる(処理

処理が

処理

処理

が重

重い

い)

Javaアプリケーション

アプリケーション

アプリケーション

アプリケーションから

から

からRDBMSへ

から

へアクセス

アクセス

アクセス

アクセスするたびに

するたびに

するたびにコネクション

するたびに

コネクションの

コネクション

コネクション

の作成

作成

作成、

作成

、破棄

破棄

破棄を

破棄

行うことは

うことは

うことはパフォーマンス

うことは

パフォーマンス

パフォーマンス

パフォーマンス低下

低下の

低下

低下

の原因

原因

原因

原因となる

となる

となる

となる

3. SQL文送信

(9)

JDBCを使ったDB接続の実際:

コネクションプール



そこでコネクションプール



複数のコネクション

コネクション

コネクション

コネクションを

を予

予め

め作成

作成

作成

作成して貯めておく



JavaアプリケーションがRDBMSにアクセスする際、コネクションプールからコ

ネクションを取得する。(コネクション

コネクション

コネクションは

コネクション

は作成

作成

作成しない

作成

しない

しない)

しない



RDBMSに対して処理が終了すると、Javaアプリケーションはコネクションをク

ローズし、コネクションプールに返却される。(コネクション

コネクション

コネクション

コネクションは

は破棄

破棄

破棄

破棄しない

しない

しない

しない)



コネクションプールに返却されたコネクションは別のJavaアプリケーションに

よって再利用

再利用

再利用

再利用される

コネクション

JDBC API JDBCドライバ

コネクション

JDBC API JDBCドライバ

コネクション

JDBC API JDBCドライバ

コネクションプール

コネクションプール

コネクションプール

コネクションプール

Java

アプリケーション

DataSource

JDBC API JDBCドライバ 2. コネクションを要求

DB

1. コネクションを 作成しておく 1. 接続 1. 接続 1. 接続 3. SQ L文送 信 3. SQL文送信 4. ク ロー ズ

(10)

目次

JDBC

J2EEサーバからMySQLへの接続方法

Tomcat

JBossAS

付録

Javaのインストール手順

Tomcatのインストール手順

JBossASのインストール手順

(11)

J2EEサーバからMySQLの利用手順

準備

準備

準備

準備

1.

J2EEサーバにConnector/J(MySQL用JDBCドライバ)をインストール

2.

MySQL用DataSourceとコネクションプールをJ2EEサーバの設定ファ

イルで定義

定義したDataSourceをJ2EEサーバによりJNDIツリーにバインドされる

利用手順

利用手順

利用手順

利用手順

1.

アプリケーションがJNDIツリーを検索(lookup)して、MySQL用の

DataSourceを取得

2.

取得したDataSourceに対して、MySQLへのコネクションを要求

3.

取得したコネクションを利用してSQL文を送信

4.

DB処理が終了したら、コネクションをクローズ

(12)

J2EEサーバからMySQLの利用するには

コネクション

JDBC API Connector/J

コネクション

JDBC API Connector/J

コネクション

JDBC API Connector/J

コネクションプール

コネクションプール

コネクションプール

コネクションプール

MySQL

JNDI

Java

アプリケーション

(JSP/Servlet..etc)

J2EEサーバー

設定ファイル

JDBCドライバライブラリ

(Connector/Jのjar)

DataSource

JDBC API Connector/J 1. DataSourceを検索 2. コネクションを要求 コネクションを作成 3. SQL文送信 準備1. JDBCドライバをインス トール 準備2. DataSource/コネクショ ンプールの設定 3. SQL文送信 接続 接続 接続 4. クローズ

(13)

Connector/J のダウンロード

http://www.mysql.com/

Developer Zone

Downloads

Drivers and Connectors

MySQL Connector/J 5.0

[直接のURL]

http://dev.mysql.com/downloads/connector/j/5.0.html

Source and Binaries (zip)

Download をクリックしてダウンロードを開始

 mysql-connector-java-5.0.3.zip

/tmpディレクトリ

ディレクトリ

ディレクトリに

ディレクトリ

にダウンロード

ダウンロード

ダウンロード

ダウンロードしたこととし

したこととし、

したこととし

したこととし

、展開

展開

展開

展開しておきます

しておきます

しておきます

しておきます。

$ cd /tmp

(14)

TomcatからMySQLの利用するには

コネクション

JDBC API Connector/J

コネクション

JDBC API Connector/J

コネクション

JDBC API Connector/J

コネクションプール

コネクションプール

コネクションプール

コネクションプール

MySQL

JNDI

Java

アプリケーション

(JSP/Servlet..etc)

Tomcat

server.xml

Connector/J の

jarファイル

DataSource

JDBC API Connector/J 1. DataSourceを検索 2. コネクションを要求 コネクションを作成 3. SQL文送信 準備1. Connector/Jを インストール 準備2. DataSource/コネクショ ンプールの設定 3. SQL文送信 接続 接続 接続 4. クローズ

(15)

Tomcat

前提

Tomcat 5.5.17 が $CATALINA_HOME で設定されたディレクトリにイ

ンストールされているものとします。

CATALINA_HOME=/usr/local/tomcat/apache-tomcat-5.5.17

[Tomcatの

の起動

起動

起動]

起動

$ cd $CATALINA_HOME/bin

$ ./startup.sh

[Tomcatの

の停止

停止

停止]

停止

$ cd $CATALINA_HOME/bin

$ ./shutdown.sh

[起動確認

起動確認

起動確認]

起動確認

ブラウザで、http://<host_name>:8080/ にアクセス

予めTomcat自体が正しく起動するか確認しておいて下さい。

(16)

Tomcat:

Connector/J のインストール

$ cp ¥

> /tmp/mysql-connector-java-5.0.3/mysql-connector-java-5.0.3-bin.jar ¥

> $CATALINA_HOME/common/lib/

Connector/J をTomcatにインストールします。

mysql-connector-java-5.0.3-bin.jar を

$CATALINA_HOME/common/lib ディレクトリにコピー

(17)

Tomcat:

DataSource/コネクションプールの設定

<Host name=“localhost” appBase=“webapps“ ...>

<Context path=“” docBase=“ROOT“

debug=”5” reloadable=“true” crossContext=“true”>

<Resource

name=“jdbc/MySqlDS” auth=“Container“

type=”javax.sql.DataSource“

initialSize=”3“

maxActive=”10” maxIdle=“5” maxWait=“10000“

username="dbuser" password="dbpass“

driverClassName="com.mysql.jdbc.Driver“

url="jdbc:mysql://localhost:3306/mydb?characterEncoding=MS932"/>

</Context>

</Host>

$CATALINA_HOME/conf/server.xml を編集します

<Host>要素の中に、次のような<Context>要素を追加します。

追加

追加

追加

追加

(18)

Tomcat:

ご注意

以下の変更をTomcatに反映させるためには、Tomcatを

再起動する必要があります

Connector/J のインストール

server.xml を編集してDataSource/コネクションプールの設定

[Tomcatの

の停止

停止

停止]

停止

$ cd $CATALINA_HOME/bin

$ ./shutdown.sh

[Tomcatの

の起動

起動

起動]

起動

$ cd $CATALINA_HOME/bin

$ ./startup.sh

(19)

Tomcat:

サンプルアプリケーション(1/2)

list.jsp : mytable01テーブルのすべてのデータを表示

<%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%@page import="javax.sql.*"%> <%@page import="javax.naming.*"%> <html><body> <h3>Server Info</h3> <ul>

<li>J2EE Server : <%= application.getServletContextName() %></li> <li>Servlet Container : <%= application.getServerInfo() %></li> <%

String DS_NAME;

if (application.getServletContextName().indexOf("Tomcat") > 0) {

DS_NAME="java:comp/env/jdbc/MySqlDS"; //For Tomcat } else {

DS_NAME="java:MySqlDS"; //For JBossAS }

Connection conn = null; Statement stmt = null; try {

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup(DS_NAME); conn = ds.getConnection();

DatabaseMetaData md = conn.getMetaData();

out.println("<li>Database : " + md.getDatabaseProductName() + " "

+ md.getDatabaseProductVersion() + "</li>"); out.println("<li>JDBC Driver : " + md.getDriverName() + " "

DataSourceの

JNDI名を設定

DataSourceを検索

DataSourceからコネ

クションを取得

(20)

Tomcat:

サンプルアプリケーション(2/2)

out.println("<h3>SELECT * FROM mytable01;</h3>");

stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM mytable01");

out.println("<table border=¥"1¥">");

out.println("<tr><td>id</td><td>last_name</td><td>first_name</td></tr>"); while(rs.next() != false) {

int id = rs.getInt(1);

String last_name = rs.getString(2); String first_name = rs.getString(3); out.println("<tr><td>" + id + "</td>" +

"<td>" + last_name + "</td>" +

"<td>" + first_name + "</td></tr>"); }

out.println("</table>");

} catch(NamingException ne) { ne.printStackTrace(); } catch(SQLException se) { se.printStackTrace(); } finally {

try {

if (stmt != null) { stmt.close(); }

} catch(SQLException se) { se.printStackTrace(); } try {

if (conn != null) { conn.close(); }

} catch(SQLException se) { se.printStackTrace(); } } //finally %> </body>

コネクションを経由で

SQL文を送信

コネクションをクローズ

(21)

Tomcat:

サンプルアプリケーションのデプロイ

$ cp /tmp/list.jsp $CATALINA_HOME/webapps/ROOT/

list.jsp を Tomcat の ROOTアプリケーションにデプロ

イします。

list.jsp を $CATALINA_HOME/webapps/ROOT/ にコ

ピー

(22)

Tomcat:

サンプルアプリケーションの実行

Webブラウザで次のURLにアクセスします

[Tomcatの

の起動

起動

起動

起動]

$ cd $CATALINA_HOME/bin

$ ./startup.sh

もしTomcatが停止中の場合は

起動してください。

http://<host_name>:8080/list.jsp

(23)

JBossASからMySQLの利用するには

コネクション

JDBC API Connector/J

コネクション

JDBC API Connector/J

コネクション

JDBC API Connector/J

コネクションプール

コネクションプール

コネクションプール

コネクションプール

MySQL

JNDI

Java

アプリケーション

(JSP/Servlet..etc)

JBossAS

mysql-ds.xml

Connector/J の

jarファイル

DataSource

JDBC API Connector/J 1. DataSourceを検索 2. コネクションを要求 コネクションを作成 3. SQL文送信 準備1. Connector/Jを インストール 準備2. DataSource/コネクショ ンプールの設定 3. SQL文送信 接続 接続 接続 4. クローズ

Tomcat

(Servletコンテナ)

(24)

JBossAS

前提

JBossAS 4.0.4.GA が $JBOSS_HOME で設定されたディレクトリにイ

ンストールされているものとします。

JBOSS_HOME=/usr/local/jboss/jboss-4.0.4.GA

[JBossASの

の起動

起動

起動

起動]

$ cd $JBOSS_HOME/bin

$ ./run.sh

[JBossの

の停止

停止

停止

停止]

(起動したターミナルで) Ctrl+C

もしくは、別ターミナルで、

$ cd $JBOSS_HOME/bin

$ ./shutdown.sh

[起動確認

起動確認

起動確認]

起動確認

ブラウザで、http://<host_name>:8080/ にアクセス

予めJBossAS自体が正しく起動するか確認しておいて下さい。

(25)

JBossAS:

Connector/J のインストール

$ cp ¥

> /tmp/mysql-connector-java-5.0.3/mysql-connector-java-5.0.3-bin.jar ¥

> $JBOSS_HOME/server/default/lib/

Connector/J をJBossASにインストールします。

mysql-connector-java-5.0.3-bin.jar を

$JBOSS_HOME/server/default/lib ディレクトリにコピー

(26)

JBossAS:

ご注意

以下の変更をJBossASに反映させるためには、

JBossASをを再起動する必要があります

Connector/J のインストール

[JBossASの

の停止

停止

停止]

停止

(起動したターミナルで)Ctrl+C

もしくは、別ターミナルで、

$ cd $JBOSS_HOME/bin

$ ./shutdown.sh

[JBossASの

の起動

起動

起動]

起動

$ cd $JBOSS_HOME/bin

$ ./run.sh

(27)

JBossAS:

DataSource/コネクションプールの設定

$ cd $JBOSS_HOME/docs/examples/jca

$ cp mysql-ds.xml mysql-ds.xml.org

$ vi mysql-ds.xml

...

<datasources>

<local-tx-datasource>

<jndi-name>MySqlDS</jndi-name>

<connection-url>

jdbc:mysql://localhost:3306/mydb

</connection-url>

<driver-class>com.mysql.jdbc.Driver</driver-class>

<user-name>

dbuser

</user-name>

<password>

dbpass

</password>

...

</datasources>

$ cp mysql-ds.xml $JBOSS_HOME/server/default/deploy/

JBossASをインストールすると、MySQL用のDataSource設定ファイルのサ

ンプルもインストールされます

$JBOSS_HOME/docs/examples/jca/mysql-ds.xml

DataSource/コネクションプールを有効にするには、このサンプル設定ファ

イルを編集して、JBossASにデプロイします。

(28)

JBossAS:

サンプルアプリケーション(1/2)

list.jsp : mytable01テーブルのすべてのデータを表示

<%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%@page import="javax.sql.*"%> <%@page import="javax.naming.*"%> <html><body> <h3>Server Info</h3> <ul>

<li>J2EE Server : <%= application.getServletContextName() %></li> <li>Servlet Container : <%= application.getServerInfo() %></li> <%

String DS_NAME;

if (application.getServletContextName().indexOf("Tomcat") > 0) { DS_NAME="java:comp/env/jdbc/MySqlDS"; //For Tomcat

} else {

DS_NAME="java:MySqlDS"; //For JBossAS }

Connection conn = null; Statement stmt = null; try {

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup(DS_NAME); conn = ds.getConnection(); DatabaseMetaData md = conn.getMetaData(); out.println("<li>Database : " + md.getDatabaseProductName() + " "

DataSourceの

JNDI名を設定

DataSourceを検索

DataSourceからコネ

クションを取得

(29)

JBossAS:

サンプルアプリケーション(2/2)

out.println("<h3>SELECT * FROM mytable01;</h3>");

stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM mytable01");

out.println("<table border=¥"1¥">");

out.println("<tr><td>id</td><td>last_name</td><td>first_name</td></tr>"); while(rs.next() != false) {

int id = rs.getInt(1);

String last_name = rs.getString(2); String first_name = rs.getString(3); out.println("<tr><td>" + id + "</td>" +

"<td>" + last_name + "</td>" +

"<td>" + first_name + "</td></tr>"); }

out.println("</table>");

} catch(NamingException ne) { ne.printStackTrace(); } catch(SQLException se) { se.printStackTrace(); } finally {

try {

if (stmt != null) { stmt.close(); }

} catch(SQLException se) { se.printStackTrace(); } try {

if (conn != null) { conn.close(); }

} catch(SQLException se) { se.printStackTrace(); } } //finally %> </body> </html>

コネクションを経由で

SQL文を送信

コネクションをクローズ

(30)

JBossAS:

サンプルアプリケーションのデプロイ

$ cp /tmp/list.jsp ¥

> $JBOSS_HOME/server/default/deploy/jbossweb/tomcat55.sar/ROOT.war/

list.jsp を JBossASのROOTアプリケーションにデプロイ

します。

list.jsp を

$JBOSS_HOME/server/default/deploy/jbossweb/tomcat55.sar/ROO

T.war/ にコピー

(31)

JBossAS:

サンプルアプリケーションの実行

Webブラウザで次のURLにアクセスします

[JBossASの

の起動

起動

起動]

起動

$ cd $JBOSS_HOME/bin

$ ./run.sh

もしJBossASが停止中の場合は

起動してください。

http://<host_name>:8080/list.jsp

(32)

Connector/J に関するドキュメント

基本情報

[英語] http://www.mysql.com/products/connector/j/

技術情報(オンラインマニュアル)

(33)

付録

Javaのインストール手順

Tomcatのインストール手順

JBossASのインストール手順

(34)

Javaのインストール手順

# cd /usr/local

# sh /tmp/jdk-1_5_0_08-linux-i586.bin

JDK 5.0 のダウンロード

http://java.sun.com/

Popular Downloads:

Java SE

JDK 5.0 Update 8

Downloads

“Accept License Agreement”を押す

“Linux self-extraction file”を押しすとダウンロード開始

“jdk-1_5_0_08-linux-i586.bin” ファイル がダウンロードされる

/tpm 以下にダウンロードしたものとします

(35)

Tomcatのインストール手順

# mkdir /usr/local/tomcat

# cd /usr/local/tomat

# jar xvf /tmp/apache-tomcat-5.5.17.zip

# chown -R <user>:<group> apache-tomcat-5.5.17

$ export JAVA_HOME=/usr/local/jdk1.5.0.7

$ export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-5.5.17

$ cd $CATALINA_HOME/bin

Tomcat のダウンロード

http://tomcat.apache.org/

Download

Tomcat 5.x

Binary Distributions

Core:

“zip” を押すとダウンロード開始

“apache-tomcat-5.5.17.zip” ファイル がダウンロードされる

/tpm 以下にダウンロードしたものとします

Tomcat のインストール

(36)

JBossASのインストール手順

# mkdir /usr/local/jboss

# cd /usr/local/jboss

# jar xvf /tmp/jboss-4.0.4.GA.zip

# chown -R <user>:<group> jboss-4.0.4.GA

$ export JAVA_HOME=/usr/local/jdk1.5.0.7

$ export JBOSS_HOME=/usr/local/jboss/jboss-4.0.4.GA

JBossAS のダウンロード

http://www.jboss.org/

Downloads

JBoss Application Server  Download

“Version”カラムが”4.0.4”の行の”Download”をクリック

“jboss-4.0.4.GA.zip”をクリック

任意のミラーサーバの行の”Download”をクリック

“jboss-4.0.4.GA.zip” ファイル がダウンロードされる

/tpm 以下にダウンロードしたものとします

JBossAS のインストール

(37)

参照

関連したドキュメント

トヨタ ランドクルーザープラド 特別仕様車 TX“Lパッケージ・Matt Black Edition” 主要装備一覧表. 主要装備一覧表

警告 当リレーは高電圧大電流仕様のため、記載の接点電

Inspiron 15 5515 のセット アップ3. メモ: 本書の画像は、ご注文の構成によってお使いの

※ 1

図 3.1 に RX63N に搭載されている RSPI と簡易 SPI の仕様差から、推奨する SPI

TC10NM仕様書 NS-9582 Rev.5 Page

新製品「G-SCAN Z」、 「G-SCAN Z Tab」を追加して新たにスタート 新製品「G-SCAN Z」、 「G-SCAN Z

題が検出されると、トラブルシューティングを開始するために必要なシステム状態の情報が Dell に送 信されます。SupportAssist は、 Windows