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); } } |
|