⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 886839.xml

📁 论坛精华帖子
💻 XML
📖 第 1 页 / 共 2 页
字号:
<?xml version='1.0' encoding='GB2312'?>
<?xml-stylesheet type='text/xsl' href='../csdn.xsl'?>
<Topic>
<Issue>
<PostUserNickName>冷酷到底</PostUserNickName>
<rank>一级(初级)</rank>
<ranknum>user1</ranknum>
<credit>100</credit>
<TopicId>886839</TopicId>
<TopicName>Tocat4.0如何配置数据库连接池?</TopicName>
<PostUserId>176073</PostUserId>
<PostUserName>qqen</PostUserName>
<RoomName>JSP</RoomName>
<ReplyNum>2</ReplyNum>
<PostDateTime>2002-7-19 15:16:18</PostDateTime>
<Point>20</Point>
<ReadNum>0</ReadNum>
<RoomId>28</RoomId>
<EndState>2</EndState>
<Content>个位老兄:
&#32;&#32;有谁懂在Tomcat下配置数据库连接池的?教小弟一招!</Content>
</Issue>
<Replys>
<Reply>
<PostUserNickName>Nomad</PostUserNickName>
<rank>五级(中级)</rank>
<ranknum>user5</ranknum>
<credit>100</credit>
<ReplyID>5756382</ReplyID>
<TopicID>886839</TopicID>
<PostUserId>87965</PostUserId>
<PostUserName>7</PostUserName>
<Point>20</Point>
<Content>http://61.144.28.245/hjc/mycgi/bbs/topic.cgi?forum=43&amp;topic=24

tomcat到了4.0后,终于引入了连结池技术,实际上好像只是别人的东西整合了进来。还有那个“超级”server.xml,几乎把所有的配置都丢在了里面,再加上它的help相比起来不是太理想。因此对于配置tomcat来说,的确是件很头疼的事。&#32;
不过tomcat中配置数据库连结池的具体操作,tomcat已经有了比较详细的文档&#32;
http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html&#32;
这篇文档同样可以在tomcat4.0及更高版本安装后的目录里找到。以前一直认为这篇文档内容很模糊,而且例子太少。连结池配了很久都没有成功,配置成功后回头看它的内容还都是对的,只能认为是自己E文水平和理解力不行。&#32;
所以下面将自己对tomcat文档的一些理解和调试过程中的一些体会,通过中文表达出来,而不是完全的翻译。&#32;

按J2EE标准配置连结池,至少需要改动两个文件&#32;$CATALINA_HOME/conf/server.xml&#32;和&#32;/WEB-INF/web.xml。而tomcat中,所用数据库的驱动可以用jar文件的形式(驱动为zip文件的,改后缀名为jar即可)放在$CATALINA_HOME/common/lib目录下(tomcat会自动加载该目录中jar文件),本例中就是把oracle的JDBC驱动classes12.zip更名为classes12.jar使用的。&#32;

首先,server.xml在tomcat的安装目录conf目录下,连结池数据源的驱动、URL、用户名、密码,以及此连结产生资源名的等参数都保存在这里。下面就是一个例子:&#32;

&lt;Context&#32;...&gt;&#32;

&#32;...&#32;

&#32;&lt;Resource&#32;name="jdbc/Test"&#32;auth="Container"&#32;type="javax.sql.DataSource"/&gt;&#32;

&#32;&lt;ResourceParams&#32;name="jdbc/Test"&gt;&#32;

&#32;&#32;&#32;&lt;parameter&gt;&#32;

&#32;&#32;&#32;&#32;&#32;&lt;name&gt;user&lt;/name&gt;&#32;

&#32;&#32;&#32;&#32;&#32;&lt;values&gt;&lt;/values&gt;&#32;

&#32;&#32;&#32;&lt;/parameter&gt;&#32;

&#32;&#32;&#32;&lt;parameter&gt;&#32;

&#32;&#32;&#32;&#32;&#32;&lt;name&gt;password&lt;/name&gt;&#32;

&#32;&#32;&#32;&#32;&#32;&lt;values&gt;&lt;/values&gt;&#32;

&#32;&#32;&#32;&lt;/parameter&gt;&#32;

&#32;&#32;&#32;&lt;parameter&gt;&#32;

&#32;&#32;&#32;&#32;&#32;&lt;name&gt;driverClassName&lt;/name&gt;&#32;

&#32;&#32;&#32;&#32;&#32;&lt;values&gt;sun.jdbc.odbc.JdbcOdbcDriver&lt;/values&gt;&#32;

&#32;&#32;&#32;&lt;/parameter&gt;&#32;

&#32;&#32;&#32;&lt;parameter&gt;&#32;

&#32;&#32;&#32;&#32;&#32;&lt;name&gt;driverName&lt;/name&gt;&#32;

&#32;&#32;&#32;&#32;&#32;&lt;values&gt;jdbc:odbc:test&lt;/values&gt;&#32;

&#32;&#32;&#32;&lt;/parameter&gt;&#32;

&#32;&lt;/ResourceParams&gt;&#32;

&#32;...&#32;

&lt;/Context&gt;&#32;

这里有一点大家尤其要注意的是Context中有path和docBase参数,server.xml中默认有一个&#32;
&lt;Context&#32;path="/examples"&#32;docBase="examples"&#32;debug="0"&#32;reloadable="true"&gt;&#32;
如果把上面的代码放在这个&lt;Context&gt;之间,那它就是用来设置exmaple中的一个数据连结池资源,其他发布目录包括ROOT目录是无法调用到的。所以测试用的JSP页面也应该放到$CATALINA_HOME/webapps/examples目录下。如果你要在其他目录下发布的话,就应该建立一个相应的&lt;Context&gt;,并设置相应的连结资源。&#32;
言归正传,看了上面的代码,很容易理解,此数据库连结池的资源名为jdbc/Test。这个资源名在tomcat启动后根据server.xml中的参数立即生成,JSP和Servlet一般即直接调用了。不过按照J2EE的规范,应该在WEB-INF目录中的web.xml部署文件来实现此资源的调度(也可以将资源名重新映射成为你所需要的名字)。按照前面提到的,应该在examples\WEB-INF目录下的web.xml文件中加入如下代码:&#32;

&lt;resource-ref&gt;&#32;

&#32;&lt;description&gt;&#32;

&#32;&#32;&#32;Resource&#32;reference&#32;to&#32;a&#32;factory&#32;for&#32;java.sql.Connection&#32;

&#32;&#32;&#32;instances&#32;that&#32;may&#32;be&#32;used&#32;for&#32;talking&#32;to&#32;a&#32;particular&#32;

&#32;&#32;&#32;database&#32;that&#32;is&#32;configured&#32;in&#32;the&#32;server.xml&#32;file.&#32;

&#32;&lt;/description&gt;&#32;

&#32;&lt;res-ref-name&gt;&#32;

&#32;&#32;&#32;jdbc/Test&#32;

&#32;&lt;/res-ref-name&gt;&#32;

&#32;&lt;res-type&gt;&#32;

&#32;&#32;&#32;javax.sql.DataSource&#32;

&#32;&lt;/res-type&gt;&#32;

&#32;&lt;res-auth&gt;&#32;

&#32;&#32;&#32;Container&#32;

&#32;&lt;/res-auth&gt;&#32;

&lt;/resource-ref&gt;&#32;

完毕后,就可以写测试用的JSP文件了(test.jsp):&#32;

&#32;&lt;%@&#32;page&#32;import="javax.naming.Context"&#32;%&gt;&#32;
&#32;&lt;%@&#32;page&#32;import="javax.sql.DataSource"%&gt;&#32;
&#32;&lt;%@&#32;page&#32;import="javax.naming.InitialContext"%&gt;&#32;
&#32;&lt;%@&#32;page&#32;import="java.sql.*"%&gt;&#32;

&#32;&lt;%&#32;
&#32;&#32;&#32;DataSource&#32;ds&#32;=&#32;null;&#32;
&#32;&#32;&#32;try{&#32;
&#32;&#32;&#32;&#32;&#32;Context&#32;initCtx&#32;=&#32;new&#32;InitialContext();&#32;
&#32;&#32;&#32;&#32;&#32;Context&#32;envCtx&#32;=&#32;(Context)&#32;initCtx.lookup("java:comp/env");&#32;
&#32;&#32;&#32;&#32;&#32;ds&#32;=&#32;(DataSource)envCtx.lookup("jdbc/Test");&#32;
if(ds!=null)&#32;
&#32;out.println("Connection&#32;is&#32;OK!");&#32;
else&#32;
&#32;out.println("Fail!");&#32;
&#32;&#32;&#32;}catch(Exception&#32;ne){&#32;out.println(ne);}&#32;
&#32;%&gt;&#32;

把它放到examples目录下即可。然后启动tomcat,输入http://localhost:8080/examples/test.jsp。&#32;
如果不成功,请参阅tomcat关于JNDI的文档,再仔细分析一边。&#32;

另外,还有几点需要说明:&#32;
1、曾经发过关于Tomcat4.0配置的贴子:&#32;
http://61.144.28.245/hjc/mycgi/bbs/topic.cgi?forum=23&amp;topic=515&amp;show=225&#32;
里面用的是&lt;DefaultContext&gt;在某些情况下通不过,估计跟目录有关,希望各位注意。&#32;
2、也曾经也发过贴子说tomcatv4.1.3-beta安装版里面有一个管理控制页面,可以设置很多功能包括配置连结池。当时只是说说,并没有测试。今天花了点时间也配成功了,似乎在这个版本中必须要设置WEB-INF目录下的web.xml文件才能够正常调用数据连结池。 &#32;

写的可能有些零乱,这只是一个简单的指导。大家调试同时也看看tomcat的JNDI文档,希望有所帮助。&#32;
对于调试不成功的,不想做专门回答。多试试几个版本(包括tomcat的安装版和解压)和环境,体会一下。&#32;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -