﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-redcreen-文章分类-tomcat</title><link>http://www.blogjava.net/redcreen/category/14982.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:17:05 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:17:05 GMT</pubDate><ttl>60</ttl><item><title>JSP+JAVABEAN+SERVLET开发环境配置指南</title><link>http://www.blogjava.net/redcreen/articles/71491.html</link><dc:creator>charles</dc:creator><author>charles</author><pubDate>Sat, 23 Sep 2006 13:47:00 GMT</pubDate><guid>http://www.blogjava.net/redcreen/articles/71491.html</guid><wfw:comment>http://www.blogjava.net/redcreen/comments/71491.html</wfw:comment><comments>http://www.blogjava.net/redcreen/articles/71491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redcreen/comments/commentRss/71491.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redcreen/services/trackbacks/71491.html</trackback:ping><description><![CDATA[j2sdk1.5下载地址：http://java.sun.com <br />tomcat5.5下载地址：http://jakarta.apache.org/site/binindex.cgi <br />j2sdk1.5安装目录：c:\j2sdk1.5.0 <br />tomcat5.5安装目录：c:\tomcat <br /><br />一.配置j2sdk1.5.0 <br />1.windows 2000 server系列下配置 <br />我的电脑-&gt;属性-&gt;高级-&gt;环境变量 <br />追加变量名：java_home 变量值：c:\j2sdk1.5.0 <br />追加变量名：path下变量值：%java_home%\bin; <br />追加变量名：classpath下变量值：.;%java_home%\lib;或.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar <br />*注：“.;”代表当前目录下的所有引用，“%...%”变量宏替换。 <br /><br />2.windows 9x系列下配置 <br />用记事本编辑autoexec.bat，加入下列语句： <br />set java_home=c:\j2sdk1.5.0; <br />set path=%path%;%java_home%\bin; <br />set classpath=.;%java_home%\lib;或.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar <br /><br />3.windows xp、2003 server 下配置 <br />以上两种方法皆可 <br /><br />4.运行 <br /><br />a.用记事本编辑以下代码，并保存为helloworld.java： <br />public class helloworld{ <br />public static void main(string[] args){ <br />system.out.println("hello,world!"); <br />} <br />} <br /><br />b.开始-&gt;运行-&gt;cmd <br />在控制台中切换到当前目录： <br />javac helloworld.java <br />java helloworld <br />你就会在控制台上看见输出的hello,world! <br /><br />*注：javac是编译命令，它把helloworld.java编译成helloworld.class <br />　　java就是解释命令，jvm把helloworld.class解释执行 <br />至此java运行环境配置、调试完成。 <br /><br />二.配置tomcat5.5 <br />1.windows 2000 server系列下配置 <br />我的电脑-&gt;属性-&gt;高级-&gt;环境变量 <br />追加变量名：tomcat_home 变量值：c:\tomcat <br />追加变量名：classpath下变量值：%tomcat_home%\common\lib; <br /><br />2.windows 9x系列下配置 <br />用记事本编辑autoexec.bat，加入下列语句： <br />set tomcat_home=c:\tomcat; <br />set classpath=%classpath%;%tomcat_home%\common\lib; <br /><br />3.windows xp、2003 server 下配置 <br />以上两种方法皆可 <br /><br />4.运行 <br />　 在控制台中转到c:\tomcat\bin这个目录，运行startup.bat，然后会出现一个窗口，连跳一大串东西，最后表示server已经运行： <br />“server startup in ... ms” <br />打开ie浏览器并在地址栏中输入：http://localhost:8080 <br />此时出现欢迎界面表示tomcat已经ok！ <br />　 在控制台中转到c:\tomcat\bin这个目录，运行shutdown.bat，关闭服务器。 <br />至此tomcat运行环境配置、调试完成。 <br /><br />三.配置javabeans <br /><br />1.用记事本编辑以下代码，并保存为circle.java： <br />package abc.def; <br />import java.io.*; <br />public class circle{ <br />int radius; <br />public circle(){ <br />radius=1; <br />} <br />public int getradius(){ <br />return radius; <br />} <br />public void setradius(int newradius){ <br />radius=newradius; <br />} <br />public double circlearea(){ <br />return math.pi*radius*radius; <br />} <br />public double circlelength(){ <br />return 2.0*math.pi*radius; <br />} <br />} <br /><br />2.将circle.java保存在c:\tomcat\common\classes\abc\def目录下。 <br /><br />3.开始-&gt;运行-&gt;cmd <br />在控制台中切换到当前目录： <br />javac circle.java或直接输入javac c:\tomcat\common\classes\abc\def\circle.java <br /><br />4.用记事本编辑以下代码，并保存为usebeans.jsp： <br />&lt;%@ page contenttype="text/html;charset=gb2312" %&gt; <br />&lt;%@ page import="abc.def.circle" %&gt; <br />&lt;html&gt; <br />&lt;body bgcolor=cyan&gt; <br />&lt;font size=1&gt; <br />&lt;jsp:usebean id="girl" class="abc.def.circle" scope="page"&gt; <br />&lt;/jsp:usebean&gt; <br />&lt;% girl.setradius(100); <br />%&gt; <br />&lt;p&gt;圆的半径是： <br />&lt;%= girl.getradius() %&gt; <br />&lt;p&gt;圆的周长是： <br />&lt;%= girl.circlelength() %&gt; <br />&lt;p&gt;圆的面积是： <br />&lt;%= girl.circlearea() %&gt; <br />&lt;/font&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br />5.将usebeans.jsp保存在c:\tomcat\webapps\root目录下。 <br /><br />6.启动服务器后，打开ie浏览器并在地址栏中输入：http://localhost:8080/usebeans.jsp <br />如出现预期值，表示javabeans配置成功！ <br />“ <br />圆的半径是： 100 <br /><br />圆的周长是： 628.3185307179587 <br /><br />圆的面积是： 31415.926535897932 <br />” <br />至此javabeans运行环境配置、调试完成。 <br /><br />四.servlet配置 <br />1.windows 2000 server系列下配置 <br />我的电脑-&gt;属性-&gt;高级-&gt;环境变量 <br />追加变量名：classpath下变量值：%tomcat_home%\common\lib\servlet-api.jar; <br /><br />2.windows 9x系列下配置 <br />用记事本编辑autoexec.bat，加入下列语句： <br />set classpath=%classpath%;%tomcat_home%\common\lib\servlet-api.jar; <br /><br />3.windows xp、2003 server 下配置 <br />以上两种方法皆可 <br /><br />4.运行 <br />a.用记事本编辑以下代码，并保存为hello.java： <br />import java.io.*; <br />import javax.servlet.*; <br />import javax.servlet.http.*; <br />public class hello extends httpservlet{ <br />public void init(servletconfig config) throws servletexception{ <br />super.init(config); <br />} <br />public void service(httpservletrequest request,httpservletresponse response) throws ioexception{ <br />printwriter out=response.getwriter(); <br />response.setcontenttype("text/html;charset=gb2312"); <br />out.println("&lt;html&gt;&lt;body&gt;"); <br />out.println("hello!"); <br />out.println("&lt;/body&gt;&lt;/html&gt;"); <br />} <br />} <br /><br />b.将hello.java保存在c:\tomcat\common\classes目录下。 <br /><br />c.开始-&gt;运行-&gt;cmd <br />在控制台中切换到当前目录： <br />javac hello.java或直接输入javac c:\tomcat\common\classes\hello.java <br /><br />d.注册servlet <br />用记事本打开c:\tomcat\webapps\root\web-inf\web.xml <br />在 <br />- &lt;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/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"; version="2.4"&gt; <br />&lt;display-name&gt;welcome to tomcat&lt;/display-name&gt; <br />&lt;description&gt;welcome to tomcat&lt;/description&gt; <br />- &lt;!-- jspc servlet mappings start <br />--&gt; <br />. <br />. <br />. <br />- &lt;!-- jspc servlet mappings end <br />--&gt; <br />&lt;/web-app&gt; <br />之间相应位置追加以下两组数据： <br />&lt;servlet&gt; <br />&lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />&lt;servlet-class&gt;hello&lt;/servlet-class&gt; <br />&lt;/servlet&gt; <br /><br />&lt;servlet-mapping&gt; <br />&lt;servlet-name&gt;hello&lt;/servlet-name&gt; <br />&lt;url-pattern&gt;/servlet/hello&lt;/url-pattern&gt; <br />&lt;/servlet-mapping&gt; <br /><br />*注：&lt;servlet-name&gt;...&lt;/servlet-name&gt;为servlet在服务器中的id <br />&lt;servlet-class&gt;...&lt;/servlet-class&gt;为servlet-class类名 <br />&lt;url-pattern&gt;...&lt;/url-pattern&gt;为镜像路径亦虚拟路径 <br />c:\tomcat\common\classes为类共享目录，亦可在： <br />c:\tomcat\webapps\你的应用目录\web-inf\web.xml <br />中注册，不过在应用servlet时须加入c:\tomcat\webapps\下的目录名，如： <br />http://localhost:8080/你的应用目录/servlet/hello <br />建议你自己应用所用的servlet类放置到 c:\tomcat\webapps\你的应用目录\web-inf\classes 中；在web.xml注册servlet类路径也是“/hello”即可。 <br /><br />e.重新启动服务器后，打开ie浏览器并在地址栏中输入：http://localhost:8080/servlet/hello <br />显示：“hello!”，则配置成功！ <br />至此servlet运行环境配置、调试完成。 <br /><br />以上为j2sdk1.5.0+tomcat5.5(04.07.21)配置环境步骤。由于tomcat版本更新极快，所以各版本配置略有差异。希望大家能够灵活变通！ <br /><br />这里强调本版本几个注意事项： <br />1.javabeans强制引入包package *.*; <br />2.servlet类库为%tomcat_home%\common\lib\servlet-api.jar <br />而不是%tomcat_home%\lib\servlet.jar（不存在这个目录及类库） <br />3.引入第三方类库须加入classpath或加入%java_home%\lib\下，以正常加载。用tomcat5.5(04.07.21)引用该类库时须将该*.jar文件加入%tomcat_home%\common\lib\下。 <img src ="http://www.blogjava.net/redcreen/aggbug/71491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redcreen/" target="_blank">charles</a> 2006-09-23 21:47 <a href="http://www.blogjava.net/redcreen/articles/71491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]tomcat5+mssql数据库连接池配置详解</title><link>http://www.blogjava.net/redcreen/articles/71208.html</link><dc:creator>charles</dc:creator><author>charles</author><pubDate>Thu, 21 Sep 2006 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/redcreen/articles/71208.html</guid><wfw:comment>http://www.blogjava.net/redcreen/comments/71208.html</wfw:comment><comments>http://www.blogjava.net/redcreen/articles/71208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redcreen/comments/commentRss/71208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redcreen/services/trackbacks/71208.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Verdana">
						<font face="Verdana">　　　　　　　　　tomcat5+mssql数据库连接池配置详解</font>
				</font>
		</p>
		<br />  
<p>　　抹了一头的汗，终于搞定了数据库连接池的配置，我的tomcat是５．０的ＭＳＳＱＬ　是２０００＋ＳＰ３的，我就来讲下简单的配置过程吧　</p><br />  
<p><font face="Verdana">1、把数据库JDBC驱动拷贝到%TOMCAT_HOME%/common/lib和%TOMCAT_HOME%/webapps/yourweb/WEB-INF/lib下<br />   （我的web文件夹名字叫query）<br />　　<br />2、修改%TOMCAT_HOME%/conf/server.xml文件 ，在&lt;/HOST&gt;前添加</font></p><font face="Verdana"><br />  
<p><br />&lt;Context path="/query" docBase="query" debug="0"                 reloadable="true" crossContext="true"&gt;   <br />&lt;Resource name="jdbc/query" auth="Container" type="javax.sql.DataSource"/&gt;   <br />     &lt;ResourceParams name="jdbc/query"&gt; <br />         &lt;parameter&gt;  <br />               &lt;name&gt;factory&lt;/name&gt;  <br />                   &lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;  <br />          &lt;/parameter&gt;     <br />                 &lt;parameter&gt;  <br />     &lt;name&gt;driverClassName&lt;/name&gt;  <br />     &lt;value&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value&gt;  <br />          &lt;/parameter&gt;     <br />      &lt;parameter&gt; <br />                  &lt;name&gt;url&lt;/name&gt;  <br />                  &lt;value&gt;jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=hsqrydb&lt;/value&gt;    <br />        &lt;/parameter&gt;  <br />          &lt;parameter&gt;       <br />                             &lt;name&gt;username&lt;/name&gt;  <br />                        &lt;value&gt;sa&lt;/value&gt;     <br />                 &lt;/parameter&gt;  <br />     &lt;parameter&gt;       <br />                 &lt;name&gt;password&lt;/name&gt;       <br />           &lt;value&gt;sa&lt;/value&gt; <br />     &lt;/parameter&gt;  <br />          &lt;parameter&gt;       <br />           &lt;name&gt;maxActive&lt;/name&gt;       <br />     &lt;value&gt;20&lt;/value&gt;     <br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;  <br />                  &lt;name&gt;maxIdle&lt;/name&gt;       <br />     &lt;value&gt;10&lt;/value&gt;     <br />      &lt;/parameter&gt;     <br />      &lt;parameter&gt; <br />            &lt;name&gt;maxWait&lt;/name&gt;       <br />     &lt;value&gt;-1&lt;/value&gt;     <br />      &lt;/parameter&gt;  <br />        &lt;/ResourceParams&gt;     <br />     &lt;/Context&gt;</p><br />  
<p> </p><br />  
<p><br />3、修改  %TOMCAT_HOME%/webapps/yourweb/WEB-INF/web.xml的内容如下：</p><br />  
<p>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br />&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee"<br />    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"<br />    version="2.4"&gt;<br />&lt;display-name&gt;Welcome to Tomcat&lt;/display-name&gt;<br />  &lt;description&gt; <br />       query<br />  &lt;/description&gt;<br />　&lt;resource-ref&gt;<br />　　&lt;description&gt;sqlserverDB Connection&lt;/description&gt;<br />　　&lt;res-ref-name&gt;jdbc/query&lt;/res-ref-name&gt;<br />　　&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />　　&lt;res-auth&gt;Container&lt;/res-auth&gt;<br />　　&lt;/resource-ref&gt;</p><br />  
<p>&lt;/web-app&gt;</p><br />  
<p><br />4、在对应的sql server 库里面建立对应数据库 hsqrydb  <br />   然后建立相应的表book<br />   use  hsqrydb;<br />   create table book(bookId varchar(50),bookName varchar(50),publisher varchar(100),price float,constraint pk_book primary key(bookId));<br />   insert into book values('001-22-23-1','insur_info','HSCLIC',59.0);<br />5、写对应的测试程序代码如下 位置为%TOMCAT_HOME%/webapps/yourweb 目录下<br />   可以命名为：testds.jsp</p><br />  
<p>   代码如下：<br />    &lt;!--测试数据源--&gt;<br /> &lt;%@ page contentType="text/html; charset=gb2312" %&gt;<br /> &lt;%@ page import="javax.naming.Context" %&gt; <br /> &lt;%@ page import="javax.sql.DataSource"%&gt; <br /> &lt;%@ page import="javax.naming.InitialContext"%&gt; <br /> &lt;%@ page import="java.sql.*"%&gt; </p><br />  
<p> &lt;% <br />   DataSource ds = null; <br />   try{ <br />     Context initCtx = new InitialContext(); <br />     Context envCtx = (Context) initCtx.lookup("java:comp/env"); <br />    //从Context中lookup数据源。<br />     ds = (DataSource)envCtx.lookup("jdbc/query"); <br /> if(ds!=null) <br /> {<br /> out.println("已经获得DataSource!"); <br /> out.println("&lt;br&gt;");<br /> Connection conn = ds.getConnection();<br /> Statement stmt=conn.createStatement();<br /> ResultSet rst=stmt.executeQuery("select * from book");<br /> out.println("以下是从数据库中读取出来的数据");<br /> while(rst.next())<br /> {<br /> out.println("bookName:"+rst.getString("bookName"));<br /> out.println("&lt;br&gt;"); <br /> }<br /> }<br /> else <br />  out.println("连接失败!"); <br /> }<br /> catch(Exception ne)<br /> {<br />  out.println(ne);<br /> } <br /> %&gt; </p><br />  
<p>6、这些都配置完毕后，重新启动tomcat ,在浏览器中输入<br />    http://127.0.0.1:8080/query/testds.jsp</p><br />  
<p> 返回信息为 <br /> 已经获得DataSource! <br />    以下是从数据库中读取出来的数据   bookName:insur_info</p><br />  
<p> 说明配置成功。</p><br />  
<p><br /> 在实际配置中要注意的几点是：<br /> 1、注意JNDI NAME  server.xml中的一定要与web.xml 还有调用的testds.asp中的一致<br />    server.xml<br />      ...<br />    &lt;Resource name="jdbc/query" auth="Container" type="javax.sql.DataSource"/&gt;   <br />     &lt;ResourceParams name="jdbc/query"&gt; <br />  ....<br />   web.xml<br />    ..<br />       　&lt;res-ref-name&gt;jdbc/query&lt;/res-ref-name&gt;<br />    ....<br />    testds.jsp<br />     ...<br />    ds = (DataSource)envCtx.lookup("jdbc/query"); <br />  ....</p><br />  
<p> 2、看了有些资料中说要在%TOMCAT_HOME%\conf\Catalina\localhost\目录下配置对应的.xml文件<br />    其实如果你在server.xml中的&lt;context&gt;...&lt;/context&gt;中象我上面的配置完整的也就不需要在对应目录下配置了。<br />    也可以说那是另一种配置方式吧 <br />    那种方法是在    &lt;GlobalNamingResources&gt;。。。 &lt;/GlobalNamingResources&gt;中间设置 但是必须要在<br />    %TOMCAT_HOME%\conf\Catalina\localhost\下建立对应的xml文件  <br />    这个文件里面对应的内容写上&lt;context&gt;...&lt;/context&gt;，其余的都一样的<br />    这种方法网站上讲到也很多 我就不多说了 </p><br />  
<p><a href="http://www.ideacool.net/viewidea2207.html">http://www.ideacool.net/viewidea2207.html</a></p><br /> </font><img src ="http://www.blogjava.net/redcreen/aggbug/71208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redcreen/" target="_blank">charles</a> 2006-09-21 22:37 <a href="http://www.blogjava.net/redcreen/articles/71208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP数据库连接池的必要性</title><link>http://www.blogjava.net/redcreen/articles/69820.html</link><dc:creator>charles</dc:creator><author>charles</author><pubDate>Fri, 15 Sep 2006 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/redcreen/articles/69820.html</guid><wfw:comment>http://www.blogjava.net/redcreen/comments/69820.html</wfw:comment><comments>http://www.blogjava.net/redcreen/articles/69820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redcreen/comments/commentRss/69820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redcreen/services/trackbacks/69820.html</trackback:ping><description><![CDATA[
		<div class="postcontent">一般情况下，在使用开发基于<span class="unnamed8"><font color="#0000ff">数据库</font></span>的WEB程序时，传统的模式基本是按以下步骤：<br />　　1． 在主程序（如Servlet、Beans）中建立<span class="unnamed8"><font color="#0000ff">数据库</font></span>连接。 <br />　　2． 进行SQL操作，取出数据。<br />　　3． 断开<span class="unnamed8"><font color="#0000ff">数据库</font></span>连接。<br />　　使用这种模式开发，存在很多问题。首先，我们要为每一次WEB请求（例如察看某一篇文章的内容）建立一次<span class="unnamed8"><font color="#0000ff">数据库</font></span>连接，对于一次或几次操作来讲，或许你觉察不到系统的开销，但是，对于WEB程序来讲，即使在某一较短的时间段内，其操作请求数也远远不是一两次，而是数十上百次（想想全世界的网友都有可能在您的网页上查找资料），在这种情况下，系统开销是相当大的。事实上，在一个基于<span class="unnamed8"><font color="#0000ff">数据库</font></span>的WEB系统中，建立<span class="unnamed8"><font color="#0000ff">数据库</font></span>连接的操作将是系统中代价最大的操作之一。很多时候，可能您的网站速度瓶颈就在于此。<br />　　其次，使用传统的模式，你必须去管理每一个连接，确保他们能被正确关闭，如果出现程序异常而导致某些连接未能关闭，将导致<span class="unnamed8"><font color="#0000ff">数据库</font></span>系统中的内存泄露，最终我们将不得不重启<span class="unnamed8"><font color="#0000ff">数据库</font></span>。<br />　　针对以上问题，我们首先想到可以采用一个全局的Connection对象，创建后就不关闭，以后程序一直使用它，这样就不存在每次创建、关闭连接的问题了。但是，同一个连接使用次数过多，将会导致连接的不稳定，进而会导致WEB SERVER的频频重启。故而，这种方法也不可取。实际上，我们可以使用连接池技术来解决上述问题。首先，介绍一下连接池技术的基本原理。顾名思义，连接池最基本的思想就是预先建立一些连接放置于内存对象中以备使用：　 　　　<br />      当程序中需要建立<span class="unnamed8"><font color="#0000ff">数据库</font></span>连接时，只须从内存中取一个来用而不用新建。同样，使用完毕后，只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时，我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池，将大大提高程序效率，同时，我们可以通过其自身的管理机制来监视<span class="unnamed8"><font color="#0000ff">数据库</font></span>连接的数量、使用情况等。下面我们以一个名为ConnectionPool的连接池为例来看看连接池的实现。先看看ConnectionPool的基本属性：<br />　　m_ConnectionPoolSize：连接池中连接数量下限<br />　　m_ConnectionPoolMax：连接池中连接数量上限 <br />　　m_ConnectionUseCount：一个连接的最大使用次数<br />　　m_ConnectionTimeout：一个连接的最长空闲时间<br />　　m_MaxConnections = -1：同一时间的最大连接数<br />　　m_timer：定时器 <br />　　这些属性定义了连接池与其中的每个连接的有效状态值。连接池的自我管理，实际上就是通过定时的对每个连接的状态、连接的数量进行判断而进行相应操作。其管理流程如下：<br />      我们可以定义出ConnectionPool要完成管理所需要的基本接口： <br />public class ConnectionPool implements TimerListener{<br />　　public boolean initialize() //连接池初始化 <br />　　public void destroy() //连接池的销毁 <br />　　public synchronized java.sql.Connection getConnection() //取一个连接 <br />　　public synchronized void close() //关闭一个连接 <br />　　private synchronized void removeFromPool() //把一个连接从连接池中删除 <br />　　private synchronized void fillPool() //维护连接池大小 <br />　　public synchronized void TimerEvent() //定时器事件处理函数 <br />} <br />　　通过这几个接口，已经可以完成连接池的基本管理。在TimeEvent（）函数中完成连接池的状态检验工作，fillPool()时连接池至少保持最小连接数。因为我们要保存每一个连接的状态，所以还需要一个<span class="unnamed8"><font color="#0000ff">数据库</font></span>连接对象： <br />class ConnectionObject{<br />　　public java.sql.Connection con; public boolean inUse; //是否被使用标志 <br />　　public long lastAccess; //最近一次开始使用时间 <br />　　public int useCount; //被使用次数<br />}<br />加入了ConnectionObject对象后，在ConnectionPool中操作的应该只是ConnectionObject,而其他进程需要的只是ConnectionObject的con属性，因此我们再加入一个类，作为其他进程获得与返回连接的接口： CLASS Conn{<br />　　GetConnection(); //从连接池中取出一个有效连接 <br />　　CloseConnection(); //返回连接，此时并没有关闭连接，只是放回了连接池 <br />　　DestroyPool(); //销毁连接池 <br />}<br />　<br />通过上面的介绍，我们可以看出，连接池技术的关键就是其自身的管理机制，以上的管理流程只是本人一点见解，关键是想向大家介绍一种思路，在此基础上，您可以进一步完善连接池技术为您所用。<br /><br /><br />文章出处：<a href="http://www.vipcn.com/InfoView/Article_40881.html">http://www.vipcn.com/InfoView/Article_40881.html</a></div>
<img src ="http://www.blogjava.net/redcreen/aggbug/69820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redcreen/" target="_blank">charles</a> 2006-09-15 10:27 <a href="http://www.blogjava.net/redcreen/articles/69820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转] tomcat连接池泄露的监控和解决</title><link>http://www.blogjava.net/redcreen/articles/69816.html</link><dc:creator>charles</dc:creator><author>charles</author><pubDate>Fri, 15 Sep 2006 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/redcreen/articles/69816.html</guid><wfw:comment>http://www.blogjava.net/redcreen/comments/69816.html</wfw:comment><comments>http://www.blogjava.net/redcreen/articles/69816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redcreen/comments/commentRss/69816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redcreen/services/trackbacks/69816.html</trackback:ping><description><![CDATA[
		<p>
				<font face="宋体" size="2">1. 问题描述<br />Web程序在tomcat刚开始运行时速度很快，但过一段时间后发现速度变得很慢。<br />检查日志输出，发现异常如下:<br />org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted, cause: <br />java.util.NoSuchElementException: Timeout waiting for idle object<br />同时在SQLServer事件探查器中发现，每执行一次sql语句都要产生Audit login事件，语句执行后产生<br />Audit logout事件。说明每一次tomcat都是重新打开新的连接。</font>
		</p>
		<p>
				<font face="宋体" size="2">2. 问题解决<br />tomcat 的数据源定义提供了三个参数：<br />a. 如果设为true则tomcat自动检查恢复重新利用，没有正常关闭的Connection.（默认是false）<br />&lt;parameter&gt;<br />&lt;name&gt;removeAbandoned&lt;/name&gt;<br />&lt;value&gt;true&lt;/value&gt;<br />&lt;/parameter&gt;<br />b. 设定连接在多少秒内被认为是放弃的连接，即可进行恢复利用。<br />&lt;parameter&gt;<br />&lt;name&gt;removeAbandonedTimeout&lt;/name&gt;<br />&lt;value&gt;60&lt;/value&gt;<br />&lt;/parameter&gt;<br />c. 输出回收的日志，可以详细打印出异常从而发现是在那里发生了泄漏<br />&lt;parameter&gt;<br />&lt;name&gt;logAbandoned&lt;/name&gt;<br />&lt;value&gt;true&lt;/value&gt;<br />&lt;/parameter&gt;</font> <br /><br /><br /><a href="http://blog.csdn.net/lveyo/archive/2006/08/30/1146061.aspx">http://blog.csdn.net/lveyo/archive/2006/08/30/1146061.aspx</a></p>
<img src ="http://www.blogjava.net/redcreen/aggbug/69816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redcreen/" target="_blank">charles</a> 2006-09-15 10:17 <a href="http://www.blogjava.net/redcreen/articles/69816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>