一直都JNDI这个名字,可是一直都没有去研究过,因为工作中一直都没用到。。。
    这次面试的时候用到了。。。 于是乎,找来例子练练手。。
-     看了Tomcat官方的说明,顺便看到々上善若水々的文章,理解了整个意思。
 
-     下面将我的例子写在这里,只希望下次面试的时候,我可以说,来我博客看吧,这些我都会。。
 
- 在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标准数据源资源工厂配置项如下:
    * driverClassName - 所使用的JDBC驱动类全称。
    * maxActive - 同一时刻可以自数据库连接池中被分配的最大活动实例数。
    * maxIdle - 同一时刻数据库连接池中处于非活动状态的最大连接数。
    * maxWait - 当连接池中没有可用连接时,连接池在抛出异常前将等待的最大时间,单位毫秒。
    *password - 传给JDBC驱动的数据库密码。
    * url - 传给JDBC驱动的连接URL。
    * user - 传给JDBC驱动的数据库用户名。
    * validationQuery - 一个SQL查询语句,用于在连接被返回给应用前的连接池验证。
    * 如果指定了该属性,则必为至少返回一行记录的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> 
写一个简单的jsp测试了一下:
 1
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
 2
 3
<%
 4
Connection conn = null;
 5
try
 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
 %> 
    我就是这样连接成功了。
    
    写的时候还是看了下々上善若水々 的博客,总感觉他的写得比较全,而我总感觉写不出比他好的,又不能写出和他不同的地方。。就这样子啦。。
PS:在查资料的时候,看到在CSDN中有位朋友谈到了JNDI的用处:
    JNDI不止用于数据源,其可以用于存储和获得任何类型的已命名的java对象等等.   
    
    如果使用JDBC有thin和oci两种连接方式:   
    
    [先说thin]   
    打开数据库连接方式: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
          );  
  
    
    或者用前面给出的那个   
    OracleDataSource   myODS   =   new   OracleDataSource();   //其属性简单明了,不难掌握   
    Connection   myConnection   =   myODSgetConnection("user","password");   
    [再说OCI](可以使连接池中有多个缓冲的连接)   
 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
 
    这个就当是个引子,之后对JNDI有个深入的了解和认识。。。。 
     
	posted on 2008-03-26 21:27 
Mr. Michael.Q 阅读(3774) 
评论(1)  编辑  收藏  所属分类: 
JNDI 概念学习与应用研究