Tomcat 6 JDBC接続プールでSQL Server 2000とMySQL 5を接続する設定


Tomcat               ,              Tomcat 6       .     :

Windows XP SP2, Windows 2003 Server SP1Tomcat 6SQL Server 2000MySQL 5
SQL Server 2000接続プールの構成方法は、次のように順番に操作されます.
1.    SQL Server 2000 JDBC Driver   /Tomcat6/lib,        msbase.jar、mssqlserver.jar、msutil.jar  3   
2. Tomcat 6.0/webapps , poolmssql
3. poolmssql META-INF , context.xml , :
<!-- path="/poolmssql" docBase="poolmssql" 2 poolmssql   -->
<Context path="/poolmssql" docBase="poolmssql" debug="5" reloadable="true" crossContext="true">
<!--
Resource name "pool_mssql"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" SQL Server 2000
url , "jdbc:microsoft:sqlserver:// :1433;DatabaseName= "
username="someuser" password="somepassword" 2
-->
<Resource name="pool_mssql" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://xx.xx.xx.xx:1433;DatabaseName=somedb"
username="someuser" password="somepassword"  />
</Context>
4.   poolmssql            ,  :
<%@ page language="java" contentType="text/html;charset=utf-8" import="java.sql.*, javax.sql.*, javax.naming.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>JDBC </title></head>
<body>
<%
DataSource ds = null;
InitialContext ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/pool_mssql");// java:comp/env/ context.xml Resource name "jdbc/pool_mssql"
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String strSql = "SELECT TOP 10 CompanyName FROM Suppliers"; //       SQL       
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next())
{
 out.print(rs.getString(1)+"<br />");
}
%>
</body>
</html>
:(1) page import java.sql.*, javax.sql.*, javax.naming.* 3 , 。
(2)page contentType="text/html;charset=utf-8", meta content="text/html; charset=utf-8", utf-8 , 。

MySQL 5接続プールの構成方法はMSSQL Serverと大同小異:
1.    Connector/J   /Tomcat6/lib,        mysql-connector-java-5.0.4-bin.jar
2. Tomcat 6.0/webapps , mysql
3. mysql META-INF , context.xml , :
<!-- path="/mysql" docBase="mysql" 2 mysql   -->
<Context path="/mymymy" docBase="mymymy" debug="5" reloadable="true" crossContext="true">
<!--
driverClassName="com.mysql.jdbc.Driver" MySQL
url , "jdbc:mysql:// / ", url jdbc:mysql://localhost:3306/dbname?autoReconnect=true, 3306,
username="someuser" password="somepassword" 2
-->
<Resource name="pool_mysql" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dbname?autoReconnect=true"
username="someuser" password="somepassword" />
</Context>
4. mysql , :

<%@ page language="java" contentType="text/html;charset=utf-8" import="java.sql.*, javax.sql.*, javax.naming.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>JDBC </title></head>
<body>
<%
DataSource ds = null;
InitialContext ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/jdbc/pool_mysql");// java:comp/env/ context.xml Resource name "jdbc/pool_mysql"
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String strSql = "SELECT TOP 10 CompanyName FROM Suppliers"; //       SQL       
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next())
{
 out.print(rs.getString(1)+"<br />");
}
%>
</body>
</html>

注意:(1)page宣言でimport javaを必要とする.sql.*, javax.sql.*, javax.naming.* この3つのパッケージは、テストプログラムでオブジェクトインスタンスが使用されることを宣言するためです.(2)以下のプログラムページファイル自体はutf-8符号化が必要であり、MySQLデータベースもutf-8符号化に設定する必要がある.http://unix-cd.com/vc/www/26/2007-07/6214.html
私はここで以下の仕事をしていませんが、正常に動作しています.
  • システムのCLASSSPATH、JAVAを設定するHOME、PATH等のパラメータ
  • インストールJDK
  • aspectjrt.JArをlibの下に置く
  • mssqlフォルダ内にWEB-INFクリップを作成し、webを再構築する.xmlファイル
  • よくあるエラー:
    1. 
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure due to underlying exception:
    ** BEGIN NESTED EXCEPTION **
    java.net.SocketException
    MESSAGE: java.net.ConnectException: Connection refused: connect

    文字通りmysqlサービスへの接続が拒否され、通常はMySQLサービスが起動していないためです.
    2.
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
    SQLServer 2000サービスが起動していないと、このようなエラーが報告されます.
    3.
    type Status report
    message /poolmysql.jsp
    description The requested resource (/xxx.jsp) is not available.

    通常はcontextです.xmlのurlの値が間違っています
    入門したばかりで、まだよく理解していないことがたくさんあります.もし不行き届きがあれば、交流と指摘を歓迎します.