一个简单的JNDI程序

JNDI(Java命名与目录接口服务)
Java Naming and Directory Interface:
为Java程序提供访问名字与目录服务的API。即可以使用JNDI获得对现有名字服务、新创建的命名服务的访问,可以通过JNDI的服务提供程序接口(SPI)去集成更多不同种类的名字服务。

配置(tomcat):
1,在META-INF下新建context.xml文件:

1,在META-INF下新建context.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!--配置tomcat的JNDI-->
    <Resource name="jdbc/MySQL" 
              auth="Container" 
              type="javax.sql.DataSource"
              maxActive="100" 
              maxIdle="30" 
              maxWait="10000" 
              username="root" 
              password="root"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/test?user=root;password=root;characterEncoding=
        utf8&zeroDateTimeBehavior=convertToNull" />
    <Resource name="jdbc/Oracle" 
              auth="Container" 
              type="javax.sql.DataSource"
              username="zsj" 
              password="zsj" 
              driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@localhost:1521:zsj" 
              maxActive="100" 
              maxIdle="30"
              maxWait="10000" />
</Context>  

2,在web.xml中配置:

<resource-ref>
          <description>DB Connection</description>
          <res-ref-name>jdbc/MySQL</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
  </resource-ref>  

3,把相关数据库驱动架包导入项目和tomcat中。
4,在Java代码中获得连接并操作数据库:

public static Connection getConnection(String jndiname) throws NamingException{
        Connection conn = null;
        Context initContext = new InitialContext();
        //java:/comp/env固定,不需要改变
        Context envContext = (Context) initContext.lookup("java:/comp/env");
        //获得数据源
        DataSource ds = (DataSource) envContext.lookup(jndiname);
        if(ds != null){
            try {
                conn = ds.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return conn;
    }  
说明: java:/comp/env 是标准的j2ee环境查找规则,使用这种方式必须做一次环境名到JNDI名的映射,这种隔离使得在写程序是不必关注真正的JNDI名,这与把JNDI名发到配置文件里是一样的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值