JNDI (Java Naming and Directory Interface)

     JNDI可用于配置数据连接。可用于配置Mail服务器。

       JNDI由容器管理。

第一步:将mysql-connector-java-bin.jar包放到tomcat/lib中

第二步:创建一个数据库,创建一个表


修改项目的.class文件的编译目标:

                  WebContent/WEB-INF/classes

第三步:项目的发布方式改为增加配置文件


第四步:配置JNDI

          就是在Context节点中,配置Resource资源:


<ContextdocBase="D:/programfiles/eclipse-jee-juno-SR2-win32/wk01/0505/WebContent">

      

<Resource name="jdbc/jtedu"auth="Container" type="javax.sql.DataSource"

               maxActive="4"maxIdle="30" maxWait="10000"

               username="root"password="1234" driverClassName="com.mysql.jdbc.Driver"

            url="jdbc:mysql://localhost:3306/oracle?characterEncoding=UTF8"/>

 

</Context>


第五步:在项目中使用Context类,查找在运行的环境中找这个资源

public class OneServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponseresponse)

           throws ServletException, IOException {

       try {

           //1:声明上下文对象

           Context context = new InitialContext();

           System.err.println("1:"+context); // InitialContext

           //2:获取这个类运行的环境,以下是固定写法,不能修改

           Context ctx2 = (Context)context.lookup("java:/comp/env");

           System.err.println("2:"+ctx2); //NamingContext

           //3:在已经找到的环境中,再找一个资源

           Object obj = ctx2.lookup("jdbc/jtedu");

           System.err.println("3:"+obj); //BasicDataSource

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

}

输出的示例:


第六步,将获取JNDI数据源的代码放到工厂类中

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.sql.DataSource;

public class DataSourceUtils {

    private static DataSource ds;

    static{

       try {

           //1:声明上下文对象

           Context context = new InitialContext();

           System.err.println("1:"+context);

           //2:获取这个类运行的环境,以下是固定写法,不能修改

           Context ctx2 = (Context)context.lookup("java:/comp/env");

           System.err.println("2:"+ctx2);

           //3:在已经找到的环境中,再找一个资源

           Object obj = ctx2.lookup("jdbc/jtedu");

           ds= (DataSource) obj;

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

    public static DataSource getDataSource(){

       return ds;

    }

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值