1)首先是server.xml文件,这个文件的位置相信大家都知道,注意我在host标签中加入了context标签的内容。你也可以做一全局的,不过我没试出来,如果高手用过全局的,麻烦把完整的实现发出来看看,
下面是server.xml中的全部内容,只改动了<Host></Host>,在其中加入了配置数据连接池的标签内容:
<?xml version='1.0' encoding='utf-8'?>
<Server>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
<Service name="Catalina">
<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443">
</Connector>
<Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
</Connector>
<Engine defaultHost="localhost" name="Catalina">
<!--Host-->
<Host appBase="webapps" name="localhost">
<Context path="/test" docBase="test" debug="0" reloadable="true" crossContext="true" >
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost;DatabaseName=mydata</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
</ResourceParams>
</Context>
</Host>
<Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>
</Service>
</Server>
2)(这一步你也可以尝试不用)在tomcat/conf/Catalina/localhost目录下建一xml文件,如test.xml基中test指的是我的工程名(应用名或说是部署到tomcat中的应用的名字“一至的“)加上这么一句
<ResourceLink global="jdbc/XX" name="jdbc/XX" type="javax.sql.DataSource"/>或下面这句.我用的是下面这句,
global指的是全局,可能没起什么作用
<ResourceLink name="jdbc/test" type="javax.sql.DataSource"/>
这一步不做也能运行出来。
3)配置你自己应用(test)的web.xml
在最后加入:
<resource-ref>
<description>DataSource Connection Pool</description>
<res-ref-name>java:comp/env/jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4)测试页面
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.Context"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%
try
{
Context initCtx=new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/test");
Connection conn=ds.getConnection();
out.println("data from database:<br>");
Statement stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery("select * from ClassOrder");
while(rs.next())
{
out.println(rs.getString(1));
out.println(rs.getString(2));
}
rs.close();
stmt.close();
}
catch(Exception e)
{
e.printStackTrace();
}
%>
就OK!了。
有一种简单的图形界面配置:
在IE中打开http://127.0.0.1:8080/admin,输入用户名和密码
选择Resource/Data Source/新建一个DataSource,配置如下:
①JNDI Name:jdbc/mysql //设置连接池的JNDI名
②Data Source URL:jdbc:mysql://localhost:3306/forcon //数据库连接字串,forcon为数据库名
③JDBC Driver Class:org.gjt.mm.mysql.Driver //数据库连接类
④User Name:root //数据库连接时的用户名
⑤Password:**** //数据库连接时的密码
以下默认配置。
这样配置完后,/config/server.xml下的<resource>内容会自动添加上
要想在某个Web应用下用连接池,可在IE中打开http://127.0.0.1:8080/admin,输入用户名和密码,选择
Service/Host,在其中选择要用连接池的Web目录,在右边表中作相应配置就可。
这样完了之后,/conf/Catalina/localhost下会出现一个和Web应用同名的.xml文件,里面已自动配置好。
你所做的就是手动在Web下的WEB-INF中的web.xml中添加
<resource-ref>
<description>DataSource Connection Pool</description>
<res-ref-name>java:comp/env/jdbc/javaoa</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
就可以了,这样就省去了很多复杂的添这添那了。