Monday, March 19, 2007

 

Tomcat数据库连接池配置


Edition:tomcat 5.0.28+mysql 4.0.20
建一个数据库,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');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (4, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (5, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (6, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (7, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (8, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (9, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (10, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (11, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (12, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (13, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (14, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (15, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (16, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (17, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (18, 'tom', '123');
INSERT INTO `test` (`id`, `name`, `address`) VALUES (19, 'tom', '123');


将MySQL的JDBC驱动mysql-connector-java-bin.jar放到Tomcat\common\lib下面

配置tomcat数据源

编辑tomcat\conf\server.xml
在< host> < /host> 之间加入以下内容
< !-- DataSource pools config begin-->
< Context path="/dstest" docBase="dstest" debug="5" reloadable="true">
< !--dstest为你的应用所在的目录名称,即webapps\dstest,根据你的情况更改-->
< Resource name="jdbc/testpool" auth="Container" type="javax.sql.DataSource"/>
< ResourceParams name="jdbc/testpool">
< !--jdbc/testpool为数据源名称,testpool可根据你的喜好更改-->
< parameter>
< name> factory< /name>
< value> org.apache.commons.dbcp.BasicDataSourceFactory< /value>
< /parameter>
< parameter>
< name> username< /name>
< value> root< /value>
< !--MySQL用户名-->
< /parameter>
< parameter>
< name> password< /name>
< value> root< /value>
< !--MySQL密码-->
< /parameter>
< parameter>
< name> driverClassName< /name>
< value> org.gjt.mm.mysql.Driver< /value>
< !--jdbc驱动-->
< /parameter>
< parameter>
< name> url< /name>
< value> jdbc:mysql://localhost:3306/dstest< /value>
< !--连接URL,dstest为数据库名-->
< /parameter>
< parameter>
< name> maxActive< /name>
< value> 8< /value>
< /parameter>
< parameter>
< name> maxIdle< /name>
< value> 4< /value>
< /parameter>
< parameter>
< name> maxWait< /name>
< value> 10000< /value>
< /parameter>
< /ResourceParams>
< /Context>
< !-- DataSource pools config finished-->


切记要加在< host> < /host> 之间,我辛苦的搞了一个晚上,就是这个没加对地方,郁闷了一个晚上(:
后来在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 < Host> or < Engine> element.

在tomcat\webapps建一个目录dstest(同server.xml的中< Context path="/dstest" docBase="dstest" debug="5" reloadable="true"> 对应)
dstest\WEB-INF
dstest\WEB-INF\classes
在dstest\WEB-INF下建web.xml
内容如下:

< ?xml version="1.0" encoding="UTF-8"?>

< web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
< session-config>
< session-timeout>
30
< /session-timeout>
< /session-config>

< resource-ref>
< description>
datasource jdbc/testpool
< /description>
< res-ref-name>
jdbc/testpool
< !--对应server.xml中的数据源名称-->
< /res-ref-name>
< res-type>
javax.sql.DataSource
< /res-type>
< res-auth>
Container
< /res-auth>
< /resource-ref>
< welcome-file-list>
< welcome-file>
index.jsp
< /welcome-file>
< welcome-file>
index.html
< /welcome-file>
< welcome-file>
index.htm
< /welcome-file>
< /welcome-file-list>
< /web-app>


测试dstest.jsp

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

< html>
< head>
< title> Test Database < /title>
< /head>
< body >
< center> Test Database Source Pools< /center>
< table border="0" align="center">
< %
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("< tr> ");
out.print("< td> "+resultSet.getInt(1)+"< /td> ");
out.print("< td> "+resultSet.getString(2)+"< /td> ");
out.print("< td> "+resultSet.getString(3)+"< /td> ");
//out.print("< td> KK< /td> ");
out.print("< /tr> ");
}
}
catch(SQLException e){
e.printStackTrace();
}
finally {
conn.close();
}
%>
< /table>
< /body>
< /html>

OK,all done!
good luck!

Labels:


——阅读全文——
 

Crazy Word


下午三点,看到 TOBY 的签名,得知他的Blogger在经历了一个年度的跨越终于有了更新的马迹,于是兴匆匆打开他的Blogger,从顶部拉到最下,没有看到07年2月份的文章,顿时感觉头顶似乎飞过一群鸽子,黑压压的一片。问其,回答是:“~ing”,等待指令的状态转入前台,因为刚写完一段程序,便无聊的并且极有规律的按着F5,节奏仿佛初学爵士鼓,敲着哑鼓时发出那种沉闷的敲打声般的单调(很拗口,不知道是否通顺)。

前两天的落枕,还没有完全恢复,涂过了正红花油,差点被那种呛鼻的味道给熏趴下。感觉没有任何效果,反而搞的两只手和太阳底下暴晒过的酱鸭一般——油光晶亮。通常正常人都知道:当一条路走不通的时候,我们就必须开始寻找第二条路,结果又开始把五步蛇精油涂抹在脖子上,不知道是两种药水之间的反应,还是五步蛇精油独立的效果,顿时觉得脖子火辣的烫,效果相当明显。今天想到这个药名,于是就GOOGLE了一下,汗,竟然还是“药用圣品”。抓狂中……

PS:在点发布此文之前,终于看到了TOBY 的蛛丝,比以往多得多,加油~~~~~~~~~

Labels:


——阅读全文——

Sunday, March 18, 2007

 

Wrick & Think


昨天晚上睡觉睡的落枕,可能是没有睡好的缘故,整晚展转反辙,早上五点就醒过来,而且是比较清醒的那种,并且发现脖子有酸痛的感觉,于是强迫自己再睡一觉,把落枕给纠正过来,三个小时的睡眠终究没有把痛苦的落枕纠正,只得任酸痛的脖子挂着硕大的脑袋(脑袋和脖子之间的比较),坐着看似即将退休的13路公交车颠簸的来到公司。

坐在办公室里,听着昨天心血来潮下载来的歌曲——汪峰的《飞得更高》,生命就像一条大河,时而宁静时而疯狂……在走廊上挂完电话,看着窗外的灰蒙蒙的天空,雾一般的城市,托映出屡屡温情,谁也不知道,当阳光明媚的时候,城市会不会依旧温情,也许会吧,而我却是那么殷切的希望它会的,不为别的,为的只是我坚信的一句话——“当大雾散去的时候,一切将又回到原来的位置”。突然又想到,如果让鱼看清如此清澈的世界,干干净净,阳光就是阳光,没有了折射,反射的光线,空气就是空气,没有了水中漂浮的杂质。它会不会觉得水以外的世界是如此单调乏味的?是不是又可以这样说:当鱼活在天空,它将会做出如何的思考?显然,鱼不可能活在天空,除非是晒在外面的鱼干,这是死鱼并且无法思考刚才的问题,所以不在讨论范畴。为了考证刚才的想法,计划着晚上回家,放满一脸盆的水,然后把自己硕大的脑袋塞进去,最后由于脖子的问题放弃。

Labels:


——阅读全文——

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]

  • My Photo
    Name:
    Location: Ningbo, zhejiang, China

    I'm your, I'm me, I'm Kevin

  • Blogger's Labels
    Friend's Blogger
    Website Link
    Blogger's Archives