1、连接池
Connection的取得和开放是代价比较高的处理,解决这个问题的方法是连接池。 连接池就是事先取得一定数量的Connection,程序执行处理的时候不是新建Connection,而是取得预先准备好的Connection的使用权。 2、DataSource 提供连接池机能的技术叫DataSource。 Javax.sql.DataSource 一般web服务器会提供。比如Tomcat5.5。 DataSource可以通过new来取得,但通常是通过 JNDI 用 lookup 取得。 3、JNDI (Java Naming and Directory Interface) Java 命名和目录服务接口(Java Naming and Directory Interface,JNDI)。 命名服务: 可以类比为Session属性的Map的高级版。实现指定名字的对象的,取得和登录。一般Web服务器会提供。 目录服务: 和命名服务类似,但是对象的管理是层次性的。 在命名服务里登录的对象,可以用lookup()取得。 4、基于Tomcat利用DataSource 1)JDBC驱动配置 直接利用JDBC编程的话,JDBC驱动放在Web app的WEB-INF/lib下就可以了。 利用DataSource的话,JDBC需要放在app服务器的类目录下: <Tomcat安装目录>/lib 2)修改context.xml文件 在Tomcat登录DataSource有很多办法,在context.xml里追加<Resource>是最简单的。 文件: <Tomcat安装目录>/conf/Catalina/localhost/<ProjectName.xml> 内容: 追加<Resource>要素 Resource要素 - name,名字。用这个名字取得DataResource - type,类名。一般javax.sql.DataSource - auth,认证种类,Application或Container。Application的话,需要写认证代码。 - username - password - driverClassName,JDBC驱动的类名 - url,JDBC的URL 例如: <Context> 、、、、、、 <Resource name="jdbc/myds" auth="Container" type="javax.sql.DataSource" username="sa" password="" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost"/> 、、、、、、 </Context> 3)使用DataSource 例子: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ********** try{ InitialContext ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/名字"); Connection con = ds.getConnection(); ******* }catch(Exception e){ throw new ServletException(e); } }