连接池问题解决了java编程中原始的连接数据库时候只能供一个连接使用的问题!
但在myeclipse6.0和tomcat6.0组合编程中,有部分问题和5.5的tomcat不同。这里就不说区别了,就说说怎么配置tomcat6.0下的连接池!
在加载项目后的tomcat下面的conf文件夹中的context.xml中配置如下代码!就算是配置好了,当然你的密码可能不是sa,那就根据你自己的sqlserver来设置!
<?xml version='1.0' encoding='utf-8'?> <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="名字" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="sa" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库名字" /> </Context>
配置完成后,如何在程序中调用这个外部文件呢?
我们可以看到,context.xml的<WatchedResource></WatchedResource>节点中描述了引用方式——项目中的WEB—INF、web.xml。
那也就是说,要在web.xml下对数据源进行引用。
ok,那就看看下面在web.xml下是如何引用的呢?
<resource-ref> <description>E-Books DataSource</description> <res-ref-name>books</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
加上上面的代码就ok了,要注意的是,<description></description>是对引用的描述,中间的内容可以随便写,但是,下面的name属性要和tomcat下的name一致,type和auth也是如此。否则在运行项目的时候会报Unknown Source错误的。
同时,所配置的连接池还不能在java类中引用,只能在jsp和servlet中引用。
配置玩了,还要获得连接Connection,跟原始的一样,写个连接类,但不同的是,现在你是十分的轻松!代码如下:
public Connection getConn() { Connection connection; Context ic; try { ic = new InitialContext(); Context context = (Context) ic.lookup("java:comp/env"); DataSource source = (DataSource) context.lookup("books"); // DataSource sourceone = // (DataSource)ic.lookup("java:/comp/env/books"); try { connection = source.getConnection(); } catch (SQLException e) { e.printStackTrace(); } } catch (NamingException e) { e.printStackTrace(); } return connection; }
该方法中的Context接口,通过new InitialContext来产生对象!
方法中// DataSource sourceone =
// (DataSource)ic.lookup("java:/comp/env/books");实现的跟它上面的是一样的!