Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239412
  • 博文数量: 37
  • 博客积分: 2259
  • 博客等级: 大尉
  • 技术积分: 365
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-29 00:08
文章分类

全部博文(37)

文章存档

2009年(17)

2008年(20)

我的朋友

分类: Mysql/postgreSQL

2009-03-12 00:59:10

tomcat数据库连接池配置

主要三个关键:

1 配置%TOMCAT_HOME%/conf/server.xml

2 配置%TOMCAT_HOME%/webapps/yourapp/WEB-INF/web.xml

3 MySQLJDBC驱动mysql-connector-java-bin.jar放到Tomcat\common\lib下面

 

环境:

mysql 50

tomcat 5.5注意这个版本,自己在tomcat 5.5 中总是出现错误:

Cannot create JDBC driver of class '' for connect URL 'null'

后来发现是在 server.xml 中配置时格式必须采用(tomcat5.5)

                crossContext="true">

        

                   type="javax.sql.DataSource" maxActive="100"

                    maxIdle="30" maxWait="1000"

                    username="root"  password=""

                    driverClassName="com.mysql.jdbc.Driver"

                    url="jdbc:mysql://localhost:3306/dstest?autoReconnect=true"/>

       

而不能是下文的形式!

如用下文形式,则不能使用数据源方式连接数据库。应采用传统的:

 //加载Connector/J驱动
      //
这一句也可写为:Class.forName("com.mysql.jdbc.Driver");
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      //
建立到MySQL的连接
      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dstest",
        "root", "");
      //
执行SQL语句

首先,建一个数据库,dstest
建表test
--
表的结构 `test`
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`address` varchar(50) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=20 ;

--
表中的数据 `test`


INSERT INTO `test` (`id`, `name`, `address`) VALUES (1, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (2, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (3, 'tom', '123');

MySQLJDBC驱动mysql-connector-java-bin.jar放到Tomcat\common\lib下面

配置tomcat数据源

编辑tomcat\conf\server.xml
之间加入以下内容







factory
org.apache.commons.dbcp.BasicDataSourceFactory


username
root



password
root



driverClassName
org.gjt.mm.mysql.Driver



url
jdbc:mysql://localhost:3306/dstest



maxActive
8


maxIdle
4


maxWait
10000




切记要加在之间,我辛苦的搞了一个晚上,就是这个没加对地方,

郁闷了一个晚上(:
后来在tomcat\webapps\tomcat-docs下面发现了jndi-resources-howto.html,上面说
To configure Tomcat's resource factory, add an elements like this to the $CATALINA_HOME/conf/server.xml file, nested inside the Context element for this web application (or nested inside a DefaultContext element for the surrounding or element.
终于一个一个的试了出来

tomcat\webapps建一个目录dstest(同server.xml的中对应)
dstest\WEB-INF
dstest\WEB-INF\classes
dstest\WEB-INF下建web.xml
内容如下:


xmlns:xsi=""
xsi:schemaLocation="

version="2.4">


30





datasource jdbc/testpool


jdbc/testpool



javax.sql.DataSource


Container




index.jsp


index.html


index.htm




测试
dstest.jsp

<%@ page language="java"%>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>



Test Database


Test Database Source Pools


<%
String jndi_name="java:comp/env/jdbc/testpool";
String select_user_sql="select * from test";

Context ctx = new InitialContext();
if(ctx == null )
throw new Exception("No Context");

DataSource ds = (DataSource)ctx.lookup(jndi_name);

Connection conn = ds.getConnection();

try {
PreparedStatement psPreparedStatement=conn.prepareStatement(select_user_sql);
ResultSet resultSet = psPreparedStatement.executeQuery();
while(resultSet.next()){
out.print("");
out.print("");
out.print("");
out.print("");
//out.print("");
out.print("");
}
}
catch(SQLException e){
e.printStackTrace();
}
finally {
conn.close();
}
%>
"+resultSet.getInt(1)+""+resultSet.getString(2)+""+resultSet.getString(3)+"KK




结果output:
Test Database Source Pools

1

tom

123

2

tom

123

3

tom

123

 

 

 

阅读(4498) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~