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
私はここで以下の仕事をしていませんが、正常に動作しています.
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の値が間違っています
入門したばかりで、まだよく理解していないことがたくさんあります.もし不行き届きがあれば、交流と指摘を歓迎します.