第一步、
修改Tomcat安装目录中conf文件夹下的server.xml文件,在<host></host>标签中加入如下代码:
(适用tomcat5.0):
<Context path="/YPPM" docBase="YPPM" debug="0" crosscontext="true" reloadable="true">
<!-- 设置资源的JNDI及其类型 -->
<Resource name="jdbc/yppm" auth="Container" type="javax.sql.DataSource"/>
<!-- 设置资源所要用到的参数 -->
<ResourceParams name="jdbc/yppm">
<!-- 设置用到的开源连接池 -->
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=YPPM</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<!-- 设定连接池相关信息 -->
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxldle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
</ResourceParams>
</Context>
(适用tomcat5.5以上请按下面的代码写):
<Context path="/YPPM" docBase="YPPM" debug="0" crosscontext="true" reloadable="true">
<Resource FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt" lang=EN-US>yppmds" auth="Container"
type="javax.sql.DataSource"
maxActive="20" maxIdle="5" maxWait="10000"
username="sa" password="sa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=yppm"
/>
</Context>
说明:<context>标签中的path和docbase可以设置成不同的名称,如path=/A docbase=B 那么在当你进入
http://localhost:8080/manager/html
页面的项目列表中会出现两个项目,即一个A和一个B 。当你选择从B名称进入项目时,那么所配置的数据源与连接池不起作用,只有选择A名称才起作用。即以path的值为准。当然,如果path和docbase同名,则默认从path的值进入。
另一种解释:当你的项目名称为C时,发布到Tomcat中后在
http://localhost:8080/manager/html
页面中一定会以C来命名你的项目,但是如果path的值你设置的并非是C而是D,那么选择的时候应该选择D进入项目,而非C。当然你也可以讲path,docBase的值都设置成同一个值(大小写也要一致),即你的项目名称,这样也是可以的,并且不会出现让你选择入口的情况.
第二步、
配置你项目中的web.xml文件在其中加入:
(以上面server.xml的配置为例)
<resource-ref>
<description>restrant DataSource</description>
<!-- res-ref-name对应server.xml中指定的Resource name -->
<res-ref-name>jdbc/yppmds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<!-- res-author说明是否由容器自动管理 -->
<res-auth>Container</res-auth>
</resource-ref>
第三步、
将数据库驱动放到tomcat/common/lib目录中。 如果是tomcat6.0的话,它没有common目录,则直接放在tomcat/lib目录中.
第四步、
Connection con=null;
// Context ic=new InitialContext();
// DataSource source=(DataSource)ic.lookup("java:comp/env/jdbc/yppm");//java:comp/env是固定格式,后面跟数据源名称,和web.xml文件里的res-ref-name对应
// con=source.getConnection();
//1、得到初始化上下文
Context initContext = new InitialContext();
//2、得到拥有当前java运行环境资源的上下文
//java:comp/env是固定格式,后面跟数据源名称,和web.xml文件里的res-ref-name对应
Context envContext=(Context)initContext.lookup("java:/comp/env");
//3、从该上下文对象中得到数据源头
DataSource ds=(DataSource)envContext.lookup("jdbc/yppmds");
//4、从数据源中得到一个连接对象
con=ds.getConnection();