拼搏的人生

          拼搏在繁華的都市

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            7 隨筆 :: 13 文章 :: 6 評論 :: 0 Trackbacks
          Tomcat下JNDI的配置

          ??? JNDI全名為Java Naming and Directory Interface.JNDI主要提供應用程序所需要資源上命名與目錄服務.在Java EE環境中,JNDI扮演了一個很重要的角色,
          它提供了一個接口讓用戶在不知道資源所在位置的情形下,取得該資源服務.
          ??? 就好比網絡磁盤驅動器的功能一樣。如果有人事先將另一臺機器上的磁盤驅動器接到用戶的機器上,用戶在使用的時候根本就分辨不出現在的驅動器是存在本端,
          還是在另一端的機器上,用戶只需取得資源來用,根本就不知道資源在什么地方。
          ??? JNDI這個接口基本上是LDAP,LDAP全名為Lightweight Directory Access Protocol.
          ?? ?
          ??? 要設定JNDI的JDBC數據源和DBCP連接池需要做以下的工作:(for example Oracle DataBase)

          ??? 一. 安裝JDBC Driver
          ??? 將你DB的JDBC Driver部署到{Tomcat_Install]\common\lib目錄下。
          ??? 二. 設定Tomcat下的server.xml
          ??? 修改{Tomcat_Install|\conf\server.xml文件中你的站臺標簽里的<Host></Host>之間的內容.如下:
          ??? server.xml
          ???? <Host>
          ??????? <Context path="/Develop" docBase="Develop" debug="0" reloadable="true"?????????????? crossContext="true">
          ??????? <Resource name="jdbc/dy" auth="Container" type="javax.sql.DataSource"/>
          ??????????? <ResourceParams name="jdbc/dy">
          ?????????????? <parameter>
          ????????????????? <name>factory</name>
          ????????????????? <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
          ?????????????? </parameter>
          ?????????????? <parameter>
          ????????????????? <name>driverClassName</name>
          ????????????????? <value>oracle.jdbc.driver.OracleDriver</value>
          ?????????????? </parameter>
          ?????????????? <parameter>
          ????????????????? <name>url</name>
          ????????????????? <value>jdbc:oracle:thin:@yang:1521:orcl</value>
          ?????????????? </parameter>????????????? ?
          ?????????????? <parameter>
          ????????????????? <name>username</name>
          ????????????????? <value>scott</value>
          ?????????????? </parameter>
          ?????????????? <parameter>
          ????????????????? <name>password</name>
          ????????????????? <value>ss</value>
          ?????????????? </parameter>
          ?????????????? <parameter>
          ????????????????? <name>maxActive</name>
          ????????????????? <value>20</value>
          ?????????????? </parameter>
          ?????????????? <parameter>
          ????????????????? <name>maxIdle</name>
          ????????????????? <value>10</value>
          ?????????????? </parameter>
          ?????????????? <parameter>
          ????????????????? <name>maxWait</name>
          ????????????????? <value>-1</value>
          ?????????????? </parameter>? ????????????????????????????????????????????????????????????? ?
          ??????????? </ResourceParams>
          ??????? </Context>
          ????? </Host>
          ? 上述社定所表示的意思是在Develop站臺中,定義一個JDBC數據來源,名稱為jdbc/dy.
          ? 通過以下的代碼來設置的這個jdbc/dy的數據來源和DBCP連接池:
          ? <parameter>
          ???? <name>factory</name>
          ???? <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
          ? </parameter>
          ? 設定使用DBCP連接池,這是有Jakarta Project組織所制定的連接池程序,它一樣是OpenSource的.
          參數說明:
          ???? <Context></Context>用于設置你的站臺.
          ???? <Context>標簽中的path="/Develop"代表網站名稱,即: http://IP_DomaninName/Develop; docBase="Develop"代表站臺的目錄位置,debug則是設定debug level
          ???? ,0表示提供最少的信息,9表示提供最都多的信息;reloadable則表示Tomcat執行時,當class,web.xml被更新時,都會自動重新加載,不需要重新啟動Tomcat;
          ???? maxActive表示連接池的最大數據庫連接數;設為0表示無限制;maxIdle表示設定連接池中最小能有幾個Connection,若為0表示不限制;maxWait 最大建立連接等待時間。
          ??? 如果超過此時間將接到異常,設為-1表示無限制,單位為ms;driverClassName JDBC驅動程序;url表示數據庫連接字符串.

          ?三. 設定應用站臺中的web.xml
          ?eg:設定Develop的web.xml如下:
          ? <resource-ref>
          ???? <description>JNDI JDBC DataSource of Develop</description>?? //一個描述
          ???? <res-ref-name>jdbc/dy</res-ref-name>??????????????????????? //這里必須為你之前指定的<ResourceParams name="jdbc/dy">
          ???? <res-type>javax.sql.DataSource</res-type>
          ???? <res-auth>Container</res-auth>
          ? </resource-ref>

          ?四. 使用JDBC數據來源獲得Connection對象
          ?? Context initContext=new InitialContext();
          ?? Context envContext=(Context)initContext.lookup("java:/comp/env");
          ?? 或者
          ?? Context envContext=(Context)initContext.lookup("java:comp/env");
          ?? DataSourceds conn=(DataSource)envContext.lookup("jdbc/dy");
          ?? conn=ds.getConnection();

          按照這四個步驟做下來后,那么你就可以寫個Test Page來測試一下了.
          Test Page1:
          _________________________________________________________________________________________________________
          testpool.jsp
          <!--測試JNID數據源的配置-->
          <%@ page contentType="text/html;charset=gb2312"%>
          <%@ page import="javax.naming.Context"%>
          <%@ page import="javax.sql.DataSource"%>
          <%@ page import="javax.naming.InitialContext"%>
          <%@ page import="java.sql.*"%>
          <%
          ? DataSource ds=null;
          ? try
          ? {
          ????? Context initCtx=new InitialContext();
          ????? Context envCtx=(Context)initCtx.lookup("java:comp/env");
          ????? //從Context中loopup 數據源
          ????? ds=(DataSource)envCtx.lookup("jdbc/dy");
          ????? if(ds!=null)
          ????? {
          ??????? out.println("已經獲得DataSource!");
          ??????? out.println("<br>");
          ??????? Connection conn=ds.getConnection();
          ??????? Statement stmt=conn.createStatement();
          ??????? ResultSet rst=stmt.executeQuery("select * from emp");
          ??????? out.println("以下是從數據庫里讀出來的數據");
          ??????? out.println("<hr>");
          ??????? while(rst.next())
          ??????? {
          ????????? out.println("empName:"+rst.getString("ename"));
          ????????? out.println("<br>");
          ??????? }
          ????? }
          ??? else
          ?? ??? ?out.println("連接失敗");
          ? }
          ? catch(Exception e)
          ? {
          ????? out.println(e);
          ? }
          %>
          如果成功那么輸出結果:
          ========================================
          已經獲得DataSource!
          以下是從數據庫里讀出來的數據:
          empName:SMITH
          empName:ALLEN
          empName:WARD
          empName:JONES
          empName:MARTIN
          empName:BLAKE
          empName:CLARK
          empName:SCOTT
          empName:KING
          empName:TURNER
          empName:ADAMS
          empName:JAMES
          empName:FORD
          empName:MILLER
          empName:feiyang
          empName:yang
          empName:feifei
          empName:fei


          ?

          posted on 2006-05-15 12:01 Dalston.Young 閱讀(463) 評論(0)  編輯  收藏 所屬分類: 實用技術

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 灵寿县| 阿合奇县| 宜黄县| 伊川县| 翁牛特旗| 子洲县| 新河县| 油尖旺区| 杨浦区| 贵港市| 吉安县| 安陆市| 阳城县| 定西市| 石台县| 赞皇县| 云南省| 民权县| 板桥市| 仪征市| 天峻县| 崇明县| 株洲县| 镇巴县| 康平县| 永兴县| 定边县| 贵南县| 乌鲁木齐县| 鄂伦春自治旗| 镇雄县| 石林| 金昌市| 鸡泽县| 蒲城县| 南澳县| 卫辉市| 龙江县| 天峻县| 遂平县| 中卫市|