zoukankan      html  css  js  c++  java
  • Tomcat中配置JNDI数据源

    准备工作:

    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数据源与应用中使用的数据源关联起来!

    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,这一点与全局稍有区别。

    注:c3p0数据源配在这里的context中我没有测试成功,启动tomcat的时候,日志打印到no spring webapplicationinitializer types detected on classpath 就会一直卡在这里,最后超过tomcat的启动时间然后报错!对于这个问题,请教各位知道的大神!

  • 相关阅读:
    EJB>复合主键(Composite Primary Key)
    EJB>消息驱动beanTopic 消息的发送与接收(Pub/sub 消息传递模型)
    JSF>自订验证器
    EJB>自定义安全域
    EJB>Entity 的生命周期和状态、回调函数
    EJB>安全服务的具体开发
    单片机的中断系统
    JavaScript代码检查工具——JSLintMate
    如何开发一个 N9 上的程序
    NSIS安装制作基础教程
  • 原文地址:https://www.cnblogs.com/elgin-seth/p/5293784.html
Copyright © 2011-2022 走看看