`
Baple
  • 浏览: 12512 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

Java使用JNDI技术获取DataSource对象

阅读更多
package common;

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
 
/**
     * 通过JNDI获取数据源
     *
     * @author 周尚武 时间:2008年12月8日22:37:09
     */
public class DBConnection {
     /**
         * 通过JNDI获取数据源在获取连接对象
         *
         * @return Connection con
         */
     public static Connection getCon(){    
         Connection con = null;
         try {
             Context ic = new InitialContext();
             DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/books");        
            con = source.getConnection();     
        } catch (NamingException e) {
             System.out.println("数据源没找到!");
            e.printStackTrace();
         } catch (SQLException e) {
             System.out.println("获取数连接对象失败!");
             e.printStackTrace();
         }
         return con;
     }
}
 
JNDI的配置:
 
1.context.xml文件的配置:
 
<Resource name="jdbc/books"
        auth="Container" type="javax.sql.DataSource"  maxActive="100"
        maxIdle="30" maxWait="10000"   username="sa"   password="123"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://localhost:1433;databasename=books"/>
 
2.web.xml文件的配置:
 
<resource-ref>
     <res-ref-name> jdbc/books </res-ref-name>
    <res-type> javax.sql.DataSource </res-type>
    <res-auth> Container </res-auth>
</resource-ref>
 
3.添加数据库驱动文件:
 
通过数据源访问数据库,由于数据源由Tomcat 维护,所有必须把JDBC驱动程序复制到Tomcat的common/lib目录下。

补充:
jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称

访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。

         tomcat配置jndi有全局配置和局部配置。大致的有以下三种配置方式:



第一种:全局配置。

1)在tomcat的conf文件夹下的context.xml配置文件中加入:

    <Resource name="jndi/mybatis"  
                auth="Container"  
                type="javax.sql.DataSource"  
                driverClassName="com.mysql.jdbc.Driver"  
                url="jdbc:mysql://localhost:3306/appdb"  
                username="root"  
                password="123456"  
                maxActive="20"  
                maxIdle="10"  
                maxWait="10000"/>     


2)在项目的web.xml中加入资源引用:

    <resource-ref> 
      <description>JNDI DataSource</description> 
      <res-ref-name>jndi/mybatis</res-ref-name> 
      <res-ref-type>javax.sql.DataSource</res-ref-type> 
      <res-auth>Container</res-auth> 
    </resource-ref> 

其中res-ref-name值要和context.xml的name值一致。



3)jndi测试方法:

    public void testJNDI() throws NamingException, SQLException{ 
        Context ctx = new InitialContext(); 
        DataSource ds = (DataSource) ctx.lookup("java:comp/env/jndi/mybatis"); 
        Connection conn = ds.getConnection(); 
        System.out.println(conn.isClosed()); 
     
    } 


4)在jsp中调用加载jndi方式,不可以直接用main方法测试,必须通过启动容器从jsp中调用:

    TestPageAccessURL test = new TestPageAccessURL(); 
    test.testJNDI(); 




第二种:局部配置(不推荐)。

1)在tomcat的server.xml的<host>标签内,添加:

    <Context path="/demo_jndi" docBase="/demo_jndi"> 
       <Resource 
         name="jndi/mybatis" 
         type="javax.sql.DataSource" 
         driverClassName="com.mysql.jdbc.Driver" 
         maxIdle="2" 
         maxWait="5000" 
         username="root" 
         password="123456" 
         url="jdbc:mysql://localhost:3306/appdb" 
         maxActive="4"/> 
    </Context> 

其他配置同第一种方式。



第三种:局部配置。

1)在项目的META-INFO下面新建context.xml。加入:

    <?xml version="1.0" encoding="UTF-8"?> 
    <Context> 
        <Resource name="jndi/mybatis"  
                    auth="Container"  
                    type="javax.sql.DataSource"  
                    driverClassName="com.mysql.jdbc.Driver"  
                    url="jdbc:mysql://localhost:3306/appdb"  
                    username="root"  
                    password="123456"  
                    maxActive="20"  
                    maxIdle="10"  
                    maxWait="10000"/>     
    </Context> 

其他配置同第一种方式。

总结:如果要配置局部的话,推荐使用第三种方式,这样不依赖tomcat了。但是还是推荐使用第一种方式好,虽然依赖tomat,但是是全局的,而且可以配置
多个。对于以后切换使用方便。
在项目的web.xml中添加的资源引用可有可无。
分享到:
评论

相关推荐

    java jndi的使用

    在Java应用中,JNDI通常与Java EE服务器结合使用,用于管理数据源。例如,通过JNDI,我们可以查找在服务器中注册的数据源,然后获取数据库连接,从而实现数据库的访问。在给定的描述中提到的"博文链接"可能详细阐述...

    用JNDI绑定DataSource

    在Java应用中,JNDI(Java Naming and Directory Interface)是一种标准的接口,它允许应用程序查找和使用资源,如数据源(DataSource),而无需直接在代码中硬编码这些资源的位置或配置信息。JNDI的核心理念是将...

    javaJNDI连接数据库

    接下来,在Java代码中使用JNDI获取数据库连接: ```java import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; import java.sql.Connection; public class ...

    java 采用JNDI访问数据库(三种方法)

    ### 方法一:使用Java EE应用服务器内置的JNDI服务 在Java EE应用服务器(如Tomcat、JBoss、WebLogic、GlassFish等)中,数据源通常会被配置为一个JNDI资源。开发者无需直接处理数据库连接的创建和关闭,只需通过...

    JAVA中JNDI源码范例

    Java Naming and Directory Interface (JNDI) 是Java平台中用于访问和管理命名和目录服务的一组接口和类。...通过学习和实践JNDI源码示例,我们可以更好地理解和应用这项技术,提高Java应用程序的可维护性和可扩展性。

    java JNDI总结

    **JNDI**(Java Naming and Directory Interface)是Java平台中的一个API,用于访问命名和目录服务,这些服务可以存储对象引用及其名称。JNDI的主要作用在于提供了一种在分布式环境中查找和访问远程对象的标准方法。...

    JAVA对clob的操作

    JNDI方式的入库操作与JDBC方式类似,但是在获取数据库连接时使用InitialContext和DataSource对象。其他步骤相同,但是在获取java.sql.Blob对象后需要强制转换为weblogic.jdbc.vendor.oracle.OracleThinBlob对象,...

    如何在spring中等价配置得到原本由jndi配置实现的数据源

    JNDI是一种标准服务,用于在分布式环境中查找和绑定对象。在Web应用中,数据源可以通过JNDI名字在全局命名空间中注册,然后应用通过这个名字查找并获取数据源。 2. **Spring中的数据源配置**: Spring提供了多种...

    JNDI.rar_jndi

    Java Naming and ...在实际开发中,尤其是企业级应用中,利用JNDI获取数据库连接和数据源,可以实现灵活的资源管理和高效的应用部署。了解并熟练掌握JNDI的使用,对于提升Java开发效率和系统性能具有重要意义。

    java应用程序JNDI方式使用weblogic连接池的方法.pdf

    3. **使用JNDI获取WebLogic连接池的步骤**: - **准备环境**:确保在classpath中包含正确的WebLogic客户端库,通常是`wlfullclient.jar`。这个文件可以通过在WebLogic安装目录的`server/lib`下运行`java -jar ...

    java中使用tomcat提供的JNDI数据源

    它允许Java应用程序查找并使用远程对象和服务,如数据库连接等。在J2EE(现在的Java EE)环境中,JNDI是非常重要的组成部分之一,因为它提供了一种标准化的方式来管理和查找资源。 在Java应用中使用JNDI的主要优势...

    Java通用Dao包括JDBC和JNDI两种连接方式

    数据源(DataSource)是一个JDBC连接池,它预先创建并管理着多个数据库连接,应用程序可以根据需要从池中获取连接,使用完毕后再归还,从而提高系统性能和资源利用率。使用JNDI查找数据源的步骤大致如下: 1. 初始...

    jndi示例(java)

    JNDI通常与Java应用程序服务器如Tomcat一起使用,以实现服务的查找和配置。 在"jndi示例(java)"中,我们主要探讨以下几个关键知识点: 1. **JNDI的基本概念**:JNDI不是一项服务,而是访问这些服务的接口。它允许...

    jndi数据库查询例子

    在Java应用中,特别是企业级Java应用中,JNDI被广泛用于获取数据库连接,因为这种方式可以实现数据库连接的集中管理和动态配置。下面我们将深入探讨JNDI数据库查询的基本概念、工作原理以及如何在MyEclipse环境中...

    配置datasource

    可以在应用代码中使用`Context`或`InitialContext`类的`lookup()`方法查找数据源,并通过`DataSource`对象的`getConnection()`方法获取数据库连接,如果能够成功建立连接,则表明数据源配置正确。 总之,数据源的...

    JNDI配置文件

    - **配置数据源**:在应用服务器中,如Tomcat,JNDI配置文件用于定义数据源(DataSource),这样应用就可以通过JNDI查找并获取数据库连接。 - **EJB绑定**:EJBs可以通过JNDI名字在服务器中注册和查找,方便服务的...

    JNDI使用

    **JNDI(Java Naming and Directory Interface)使用详解** JNDI是Java平台中的一个标准接口,它为Java应用程序提供了一种访问命名和目录服务的统一方式。在Java应用程序中,JNDI主要用来查找和绑定对象,这些对象...

    spring 配置jndi

    在Java应用服务器中,JNDI通常用于查找数据源,这些数据源已经预先配置好,可以直接供应用程序使用,从而降低配置复杂性。 接下来,我们将详细讲解在Spring中配置JNDI数据源的步骤: 1. **配置数据源在应用服务器...

Global site tag (gtag.js) - Google Analytics