posts - 3,  comments - 2,  trackbacks - 0

              一直都JNDI這個(gè)名字,可是一直都沒有去研究過,因?yàn)楣ぷ髦幸恢倍紱]用到。。。
              這次面試的時(shí)候用到了。。。 于是乎,找來例子練練手。。

              看了Tomcat官方的說明,順便看到々上善若水々的文章,理解了整個(gè)意思。
              下面將我的例子寫在這里,只希望下次面試的時(shí)候,我可以說,來我博客看吧,這些我都會(huì)。。
          在server.xml中添加:
           
                   <Context path="/connjndi" docBase="D:\workspace\TestJndi\WebRoot" reloadable="true">

                      
          <Resource name="jdbc/SampleData" auth="Container" type="javax.sql.DataSource"
                         maxActive
          ="100" maxIdle="30" maxWait="10000"
                         username
          ="sampledata" password="password" driverClassName="oracle.jdbc.OracleDriver"
                         url
          ="jdbc:oracle:thin:@//localhost:1521/mondrian"/>
                   
          </Context>

              Tomcat標(biāo)準(zhǔn)數(shù)據(jù)源資源工廠配置項(xiàng)如下:
              * driverClassName - 所使用的JDBC驅(qū)動(dòng)類全稱。
              * maxActive - 同一時(shí)刻可以自數(shù)據(jù)庫(kù)連接池中被分配的最大活動(dòng)實(shí)例數(shù)。
              * maxIdle - 同一時(shí)刻數(shù)據(jù)庫(kù)連接池中處于非活動(dòng)狀態(tài)的最大連接數(shù)。
              * maxWait - 當(dāng)連接池中沒有可用連接時(shí),連接池在拋出異常前將等待的最大時(shí)間,單位毫秒。
              *password - 傳給JDBC驅(qū)動(dòng)的數(shù)據(jù)庫(kù)密碼。
              * url - 傳給JDBC驅(qū)動(dòng)的連接URL。
              * user - 傳給JDBC驅(qū)動(dòng)的數(shù)據(jù)庫(kù)用戶名。
              * validationQuery - 一個(gè)SQL查詢語句,用于在連接被返回給應(yīng)用前的連接池驗(yàn)證。
              * 如果指定了該屬性,則必為至少返回一行記錄的SQL SELECT語句。

          在web.xml中添加:
              
              <description>Oracle Test App</description>
              
          <resource-ref>
                
          <description>DB Connection</description>
                
          <res-ref-name>jdbc/SampleData</res-ref-name>
                
          <res-type>javax.sql.DataSource</res-type>
                
          <res-auth>Container</res-auth>
              
          </resource-ref>

          寫一個(gè)簡(jiǎn)單的jsp測(cè)試了一下:
           1<%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
           2
           3<%
           4Connection conn = null;
           5try
           6  {
           7    Context ctx = new InitialContext(); 
           8    DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/SampleData");
           9    conn = ds.getConnection();
          10    System.out.println("connection pool connected !!");   
          11  }
           catch (NamingException e) {
          12    System.out.println(e.getMessage());
          13  }
           catch (SQLException e) {
          14    System.out.println(e.getMessage());
          15    e.printStackTrace();
          16  }
          finally
          17  {
          18    conn.close();
          19  }

          20 %>

              我就是這樣連接成功了。
              
              寫的時(shí)候還是看了下々上善若水々 的博客,總感覺他的寫得比較全,而我總感覺寫不出比他好的,又不能寫出和他不同的地方。。就這樣子啦。。


          PS:在查資料的時(shí)候,看到在CSDN中有位朋友談到了JNDI的用處:
              JNDI不止用于數(shù)據(jù)源,其可以用于存儲(chǔ)和獲得任何類型的已命名的java對(duì)象等等.   
              
              如果使用JDBC有thin和oci兩種連接方式:   
              
              [先說thin]   
              打開數(shù)據(jù)庫(kù)連接方式:DriverManager.getConnection     

          1      DriverManager.registerDriver(new   oracle.jdbc.OracleDriver());   
          2    
          3          Connection   myConnection   =   DriverManager.getConnection(   
          4              "jdbc:oracle:thin:@test2000:1521:orac",     //orac為oracle的SID   
          5              "user",   
          6              "password"   
          7          ); 
            
              
              或者用前面給出的那個(gè)   
              OracleDataSource   myODS   =   new   OracleDataSource();   //其屬性簡(jiǎn)單明了,不難掌握   
              Connection   myConnection   =   myODSgetConnection("user","password");   
              [再說OCI](可以使連接池中有多個(gè)緩沖的連接)   
           1    OracleOCIConnectionPool   myOOCP   =   new   OracleOCIConnectionPool();   
           2    
           3        //   set   the   attributes   for   the   physical   database   connections   
           4        myOOCP.setServerName("test2000");   
           5        myOOCP.setDatabaseName("ORCL");   
           6        myOOCP.setDriverType("oci");   
           7        myOOCP.setPortNumber(1521);   
           8        myOOCP.setUser("store_user");   
           9        myOOCP.setPassword("store_password");   
          10    
          11        //   set   the   values   for   the   dynamic   attributes   of   myOOCP   
          12        Properties   myProperties   =   new   Properties();   
          13        myProperties.put(OracleOCIConnectionPool.CONNPOOL_MIN_LIMIT,"5");   
          14        myProperties.put(OracleOCIConnectionPool.CONNPOOL_MAX_LIMIT,"10");   
          15        myProperties.put(OracleOCIConnectionPool.CONNPOOL_INCREMENT,"2");   
          16        myProperties.put(OracleOCIConnectionPool.CONNPOOL_TIMEOUT,"30");   
          17        myProperties.put(OracleOCIConnectionPool.CONNPOOL_NOWAIT,"true");   
          18        myOOCP.setPoolConfig(myProperties);   
          19    
          20        //   request   a   connection   instance   from   myOOCP   and   store   
          21        //   the   connection   instance   in   myConnection   
          22        OracleOCIConnection   myConnection   =   (OracleOCIConnection)   myOOCP.getConnection(); 
          23

              這個(gè)就當(dāng)是個(gè)引子,之后對(duì)JNDI有個(gè)深入的了解和認(rèn)識(shí)。。。。
          posted on 2008-03-26 21:27 Mr. Michael.Q 閱讀(3746) 評(píng)論(1)  編輯  收藏 所屬分類: JNDI 概念學(xué)習(xí)與應(yīng)用研究

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 齐河县| 大埔县| 山阴县| 沾化县| 沙洋县| 扶余县| 石嘴山市| 谷城县| 洛浦县| 宿州市| 永顺县| 泾川县| 临城县| 开原市| 宁都县| 临海市| 大安市| 阿荣旗| 昭苏县| 榆中县| 恩平市| 双辽市| 绥德县| 闽侯县| 手机| 德格县| 巴林左旗| 汽车| 高州市| 宣化县| 晋城| 广东省| 托里县| 盘山县| 上饶市| 阿拉尔市| 高平市| 高邮市| 廉江市| 陇南市| 金山区|