黑马程序员技术交流社区

标题: 【广州校区】【原创】企业中如何配置使用JND连接数据源 [打印本页]

作者: 瞧瞧嗨一波...    时间: 2018-1-17 15:47
标题: 【广州校区】【原创】企业中如何配置使用JND连接数据源
准备工作:
Tomcat版本:tomcat6.0以上
下例中均使用MySQL数据库
将对应数据源的jar包和MySQL的驱动包拷贝至tomcat的lib文件夹下
一、全局数据源
1步骤一:配置
在tomcat下的conf/server.xml的GlobalNamingResources节点标签中增加如下配置:
        A、 最基本的DataSource配置:
        <Resource name="jndi " auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="root"
        driverClassName="org.gjt.mm.mysql.Driver"
        url="jdbc:mysql://localhost/test"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"/>


        B、 DBCP连接池配置:
        <Resource name="jndi " auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="root"
        driverClassName="org.gjt.mm.mysql.Driver"
        url="jdbc:mysql://localhost/test"
        Factory=“org.apache.commons.dbcp.BasicDataSourceFactory”
        maxActive="100"
        maxIdle="30"
        maxWait="10000"/>


        C、C3P0连接池配置:
        <Resource name="jndi"
           type="com.mchange.v2.c3p0.ComboPooledDataSource"  
           factory="org.apache.naming.factory.BeanFactory"
           jdbcUrl="jdbc:mysql://localhost:3306/test"driverClass="com.mysql.jdbc.Driver"
        user="root"password="root" />


        D、Tomcat7 自带的额数据库连接池
        <Resource name="jndi " auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="root"
        driverClassName="org.gjt.mm.mysql.Driver"
        url="jdbc:mysql://localhost/test"
        Factory=” org.apache.tomcat.jdbc.pool.DataSourceFactory”
        maxActive="100"
        maxIdle="30"
        maxWait="10000"/>
***********************************
这样,数据源就配好了,但是如果你想要在你的项目中来使用,那么就需要在你项目的WebRoot下的META—INF下新建一个名为context.xml的文件夹,加入下面的配置(当然也可以直接配置tomcat下的conf/context.xml中,推荐放在META-INF中,这样方便移植):
<Context>
<ResourceLink  global="jndi"
name="jndiA"
type="javax.sql.DataSource"/>
</Context>
说明:jndi是全局的JNDI名称,jndiA是你的应用中使用的JNDI名称,明显上述配置的作用就是把全局JNDI数据源与应用中使用的数据源关联起来!
****************直接配置tomcat下的conf/context.xml中**************
<Context>
        ----------
        <Resource auth="Container"
        driverClassName="org.gjt.mm.mysql.Driver"
        global="jndi"
        name="jndi"
        password="iss-dev"
        type="javax.sql.DataSource"        
        url="jdbc:mariadb://10.20.201.120:3406/ipcis_nvhlpcis?seUnicode=true&amp;characterEncoding=UTF-8&amp;useOldAliasMetadataBehavior=true"
        username="iss-dev"/>
        -----------
</Context>
******************************************************************
2.步骤2:使用JNDI数据源
        A.代码中使用:
          Context ctx = new InitialContext() ;
          DataSource ds = (DataSource)ctx.lookup("Java:comp/env/jndiA ");
          Connection conn = ds.getConnection() ;
        B.如果使用spring,那么在spring的配置文件中按如下方式配置DataSource即可:
        <beanid="dataSource"
            class="org.springframework.jndi.JndiObjectFactoryBean">
            <property name="jndiName"value="java:comp/env/jndiA " />
        </bean>






二、配置局部数据源:
局部数据源最好配置在项目WebRoot下的META-INF中的context.xml文件中的context节点中,配置的语法同全局数据源的配置方式,这样配的好处是可以直接在项目当中修改配置信息,而不用单独去修改tomcat的配置文件。

需要注意的是此时在项目中使用的JNDI name就是你配置信息中的name,这一点与全局稍有区别。一、全局数据源
1步骤一:配置
在tomcat下的conf/server.xml的GlobalNamingResources节点标签中增加如下配置:
        A、 最基本的DataSource配置:
        <Resource name="jndi " auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="root"
        driverClassName="org.gjt.mm.mysql.Driver"
        url="jdbc:mysql://localhost/test"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"/>


        B、 DBCP连接池配置:
        <Resource name="jndi " auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="root"
        driverClassName="org.gjt.mm.mysql.Driver"
        url="jdbc:mysql://localhost/test"
        Factory=“org.apache.commons.dbcp.BasicDataSourceFactory”
        maxActive="100"
        maxIdle="30"
        maxWait="10000"/>


        C、C3P0连接池配置:
        <Resource name="jndi"
           type="com.mchange.v2.c3p0.ComboPooledDataSource"  
           factory="org.apache.naming.factory.BeanFactory"
           jdbcUrl="jdbc:mysql://localhost:3306/test"driverClass="com.mysql.jdbc.Driver"
        user="root"password="root" />


        D、Tomcat7 自带的额数据库连接池
        <Resource name="jndi " auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="root"
        driverClassName="org.gjt.mm.mysql.Driver"
        url="jdbc:mysql://localhost/test"
        Factory=” org.apache.tomcat.jdbc.pool.DataSourceFactory”
        maxActive="100"
        maxIdle="30"
        maxWait="10000"/>
***********************************
这样,数据源就配好了,但是如果你想要在你的项目中来使用,那么就需要在你项目的WebRoot下的META—INF下新建一个名为context.xml的文件夹,加入下面的配置(当然也可以直接配置tomcat下的conf/context.xml中,推荐放在META-INF中,这样方便移植):
<Context>
<ResourceLink  global="jndi"
name="jndiA"
type="javax.sql.DataSource"/>
</Context>
说明:jndi是全局的JNDI名称,jndiA是你的应用中使用的JNDI名称,明显上述配置的作用就是把全局JNDI数据源与应用中使用的数据源关联起来!
****************直接配置tomcat下的conf/context.xml中**************
<Context>
        ----------
        <Resource auth="Container"
        driverClassName="org.gjt.mm.mysql.Driver"
        global="jndi"
        name="jndi"
        password="iss-dev"
        type="javax.sql.DataSource"        
        url="jdbc:mariadb://10.20.201.120:3406/ipcis_nvhlpcis?seUnicode=true&amp;characterEncoding=UTF-8&amp;useOldAliasMetadataBehavior=true"
        username="iss-dev"/>
        -----------
</Context>
******************************************************************




2.步骤2:使用JNDI数据源
        A.代码中使用:
          Context ctx = new InitialContext() ;
          DataSource ds = (DataSource)ctx.lookup("Java:comp/env/jndiA ");
          Connection conn = ds.getConnection() ;
        B.如果使用spring,那么在spring的配置文件中按如下方式配置DataSource即可:
        <beanid="dataSource"
            class="org.springframework.jndi.JndiObjectFactoryBean">
            <property name="jndiName"value="java:comp/env/jndiA " />
        </bean>


二、配置局部数据源:
局部数据源最好配置在项目WebRoot下的META-INF中的context.xml文件中的context节点中,配置的语法同全局数据源的配置方式,这样配的好处是可以直接在项目当中修改配置信息,而不用单独去修改tomcat的配置文件。
需要注意的是此时在项目中使用的JNDI name就是你配置信息中的name,这一点与全局稍有区别。










欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2