首页 > 代码库 > JNDI--Java命名和目录接口

JNDI--Java命名和目录接口

JNDI主要用于在容器中配置某些资源,让所有项目可以使用。
JNDI可以提供:

1:数据库连接池。
            自定义连接池
             第三方连接池
       Dbcp
                    C3p0
                     JNDI
2:邮件服务器定义。
3:加载任意的类,让所有项目都可以使用。
        JNDI:[定义在tomcat容器中,所有项目必须要通过查找的方式获取这个服务Javax.naming.Context 环境(ENV)上下文。
                     它的一个了类:InitialContext

 

配置JNDI,不用发布项目

1、配置tomcat/conf/server.xml

1 <Context path="/aaa" docBase="D:\\Adnroid\\Workspaces\\day25\\WebRoot"> 2                     <Resource name="jdbc/mysql" auth="Container"    //name--JNDI名称     auth--JNDI拥有者3                         type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"4                         url="jdbc:mysql:///bookstore?characterEncoding=UTF8"5                         username="root" password="mysql" maxActive="10" maxIdle="30"6                         maxWait="-1"/>7         </Context>8</Host>

 

 2、将mysql-connection.jar放到tomcat/lib目录下

3、在java项目中引用 在代码中直接查询这个jndi:

 1 //1、声明上下文环境 2             Context ctx=new InitialContext(); 3             //2、查找apache环境 4             ctx= (Context) ctx.lookup("java:/comp/env"); 5             //3、从环境中查找JNDI 6             Object obj= ctx.lookup("jdbc/mysql"); 7             /*第2,3步可以合成为obj=ctx.lookup("java:/comp/env/jdbc/mysql");*/ 8             //4、测试 9             DataSource ds=(DataSource) obj;10             Connection conn=ds.getConnection();11             System.err.println(conn);

 

注:

一般来说不会修改/server.xml,会在

目录下新建“项目名称.xml”,在里面插入第1步中的代码

 

标准DBUtils的写法

 1 public class DatasourceUtils { 2     private  static DataSource ds; 3     static{ 4         try{ 5             Context ctx = new InitialContext(); 6             ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/mysql"); 7         }catch(Exception e){ 8             e.printStackTrace(); 9         }10     }11     public static DataSource getDs(){12         return ds;13     }14 }

 

JNDI--Java命名和目录接口