今天十一选五开奖结果:JDBC数据源 使用JNDI连接池实现数据库的连接

3d开奖结果走势图连线 www.fwrl.net

“纸绘!”刘皓身体随风摆柳般飘飞开来,可是赤犬却根本没有觉得忌惮,别人面对海军六式觉得头疼,他可是大将,海军之中任何技能他都认识,都知道怎么对付,甚至基本都学会了。

赚享客怎么入驻

“唉,有些郁闷??!为何我想要的是商业头脑精通,却得到的是泡妞宗师?难道我只能是个泡妞的花心男吗?”不知是不是获得泡妞宗师后唐欣习惯改变的原因,唐欣说起话来既然带着一丝风趣以及一些痞气。
“怎么办?”薇薇脸红耳赤,自己从未想过会遇到这样的画面,可是她偏偏却没有太多的恼怒,否则早就一巴掌过去了,想到了明天这个男人就要离开,她也要离开这个带给她无限温暖和安全的怀抱她居然生出了一丝不舍,好像有点舍不得离开这个怀抱似的。

纪太虚立刻笑着提着这十几颗头颅,走出了营帐。一出营帐便见许多将士都是满含热泪的跪在纪太虚面前:“将军回来了,我们好想你??!”见到如此情景,纪太虚也不禁感到有些激动,快步走到高台之上,对着已经自行围了一圈圈的湖广军将士扫视了一圈儿。十几颗头颅立刻冲到了半空。

JDBC数据源 使用JNDI连接池实现数据库的连接



0.引言

许多Web应用程序需要通过JDBC驱动程序访问数据库,以支持该应用程序所需的功能。Java EE平台规范要求Java EE应用程序服务器为此目的提供一个DataSource实现(即,用于JDBC连接的连接池)。Tomcat提供了完全相同的支持,因此使用此服务在Tomcat上开发的基于数据库的应用程序将在任何Java EE服务器上保持不变。

有关JDBC的信息,请参考以下内容:

  • //www.oracle.com/technetwork/java/javase/jdbc/index.html?- 有关Java数据库连接信息的主页。

  • //java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html?- JDBC 2.1 API规范。

  • //java.sun.com/products/jdbc/jdbc20.stdext.pdf?- JDBC 2.0标准扩展API(包括?javax.sql.DataSourceAPI)。这个包现在被称为“JDBC可选包”。

  • //www.oracle.com/technetwork/java/javaee/overview/index.htm?- Java EE平台规范(涵盖所有Java EE平台必须提供给应用程序的JDBC工具)。

?- Tomcat中的默认数据源支持基于Commons?项目中的DBCP连接池?。然而,也可以使用实现任何其他连接池,通过编写自己的自定义资源工厂,描述?如下。javax.sql.DataSource

1.安装JDBC驱动程序

使用JDBC数据源?JNDI资源工厂要求您为Tomcat内部类和Web应用程序提供适当的JDBC驱动程序。这很容易通过将驱动程序的JAR文件安装到?WEB-INF/lib目录中来完成,这使得驱动程序既可用于资源工厂,也可用于您的应用程序。

2.声明您的资源要求

接下来,修改Web应用程序部署描述符(/WEB-INF/web.xml)以声明JNDI名称,您将在其中查找预配置的数据源。按照惯例,所有这样的名字都应该解析为jdbc子上下文(相对于作为java:comp/env所有提供的资源工厂的根的标准命名上下文来说,典型的web.xml入口可能是这样的:

?

 
<!--官网配置内容-->

<resource-ref>
  <description>
    Resource reference to a factory for java.sql.Connection
    instances that may be used for talking to a particular
    database that is configured in the <Context>
    configuration for the web application.
  </description>
  <res-ref-name>
    jdbc/EmployeeDB
  </res-ref-name>
  <res-type>
    javax.sql.DataSource
  </res-type>
  <res-auth>
    Container
  </res-auth>
</resource-ref>

<!--下面是我自己MySQL的配置内容-->
<resource-ref>
<description>
使用DataSource为jdbc/news创建新的数据源
</description>
<res-ref-name>
jdbc/news
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>

?

警告?- 请确保您遵守DTD为Web应用程序部署描述符所需的元素排序!有关详细信息,请参阅?Servlet规范。

3.编写你的应用程序使用这个资源

此资源引用的典型用法可能如下所示:

//获取Context实例
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env/jdbn/news");  //java:comp/env/名后加上你自己的命名

DataSource ds = (DataSource) envCtx.lookup("jdbc/EmployeeDB"); //这样直接就可以获得了数据库连接了 
Connection conn = ds.getConnection(); ... use this connection to access the database ... conn.close();

?

?

请注意,应用程序使用在Web应用程序部署描述符中声明的相同的资源引用名称。这与<Context>Web应用程序的元素中配置的资源工厂相匹配,?如下所述。

4.配置Tomcat的资源工厂

要配置Tomcat的资源工厂,请将这样的元素添加到<Context>Web应用程序的?元素中。

<!--官网配置内容-->


<Context ...>
  ...
  <Resource name="jdbc/EmployeeDB"
            auth="Container"
            type="javax.sql.DataSource"
            username="dbusername"
            password="dbpassword"
            driverClassName="org.hsql.jdbcDriver"
            url="jdbc:HypersonicSQL:database"
            maxActive="8"
            maxIdle="4"/>
  ...
</Context>

<!--下面是我自己的MySQL配置内容-->
<Resource name="jdbc/news"
      auth="Container"
      type="javax.sql.DataSource"
      username="root"
      password="1992121niu"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:3306/news"
      maxActive="100"
      maxIdle="30"
      maxWaite="10000"/>

 

?

?

?

?

请注意,资源名称(此处jdbc/EmployeeDB)必须与Web应用程序部署描述符中指定的值相匹配。

此示例假定您正在使用HypersonicSQL(我使用的是MySQL数据库)数据库JDBC驱动程序。自定义driverClassName和?driverName参数以匹配您的实际数据库的JDBC驱动程序和连接URL。

Tomcat标准数据源资源工厂(org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory)的配置属性如下所示:

  • driverClassName?- 要使用的JDBC驱动程序的完全限定Java类名称。

  • username - 要传递给我们的JDBC驱动程序的数据库用户名。

  • password?- 数据库密码被传递给我们的JDBC驱动程序。

  • url?- 要传递给我们的JDBC驱动程序的连接URL。(为了向后兼容,该属性driverName?也被认可。)

  • initialSize?- 池初始化期间将在池中创建的初始连接数。默认值:0

  • maxActive?- 可同时从该池中分配的最大连接数。默认:8

  • minIdle?- 同时在此池中闲置的最少连接数。默认值:0

  • maxIdle?- 可同时在此池中闲置的最大连接数。默认:8

  • maxWait?- 池在抛出异常之前等待的最大毫秒数(当没有可用的连接时)。默认值:-1(无限)

一些额外的属性处理连接验证:

  • validationQuery?- SQL查询,可以在池返回到应用程序之前用于验证连接。如果指定,这个查询必须是一个返回至少一行的SQL SELECT语句。

  • validationQueryTimeout?- 验证查询返回的超时秒数。默认值:-1(无限)

  • testOnBorrow?- true或false:每次从池中借用验证查询是否验证连接。默认值:true

  • testOnReturn?- true或false:是否每次将连接返回到池时使用验证查询验证连接。默认:false

可选的evictor线程负责通过移除任何长时间处于空闲状态的连接来缩小池。退伍军人不尊重minIdle。请注意,如果您只希望池根据配置的maxIdle属性收缩,则不需要激活evictor线程。

evictor在默认情况下是禁用的,可以使用以下属性进行配置:

  • timeBetweenEvictionRunsMillis?- 逐出器连续运行之间的毫秒数。默认值:-1(禁用)

  • numTestsPerEvictionRun?- 在逐出器的每次运行期间将由检出器检查空闲的连接数。默认:3

  • minEvictableIdleTimeMillis?- 以秒为单位的空闲时间,在该时间之后,可以通过逐出器从池中删除连接。默认值:30 * 60 * 1000(30分钟)

  • testWhileIdle?- true或者false:连接是否应该由evictor线程在池中闲置时使用验证查询进行验证。默认:false

另一个可选功能是删除废弃的连接。如果应用程序长时间未将其返回到池,则称该连接被放弃。游泳池可以自动关闭此类连接并将其从游泳池中移除。这是泄露连接的应用程序的解决方法。

放弃功能默认是禁用的,可以使用以下属性进行配置:

  • removeAbandoned?- true或false:是否从池中删除放弃的连接。默认:false

  • removeAbandonedTimeout?- 假定借用连接被放弃的秒数。默认值:300

  • logAbandoned?- true或false:是否为放弃语句或连接的应用程序代码记录堆栈跟踪。这增加了严重的开销。默认:false

最后有各种属性可以进一步调整池的行为:

  • defaultAutoCommit?- true或false:由此池创建的连接的默认自动提交状态。默认值:true

  • defaultReadOnly?- true或false:由此池创建的连接的默认只读状态。默认:false

  • defaultTransactionIsolation?- 这设置默认事务隔离级别??梢允且桓?NONE,READ_COMMITTED,?READ_UNCOMMITTED,REPEATABLE_READ,SERIALIZABLE。默认:没有默认设置

  • poolPreparedStatements?- true或false:是否要池PreparedStatements和CallableStatements。默认:false

  • maxOpenPreparedStatements?- 可以从语句池同时分配的最大打开语句数。默认值:-1(无限制)

  • defaultCatalog?- 默认目录的名称。默认:未设置

  • connectionInitSqls?- 在创建连接后运行一次SQL语句。用分号(;)分隔多个语句。默认:没有语句

  • connectionProperties?- 传递给驱动程序以创建连接的驱动程序特定属性的列表。每个属性都给定为name=value,多个属性用分号(;)分隔。默认值:没有属性

  • accessToUnderlyingConnectionAllowed?- true或false:是否允许访问基础连接。默认:false

*Myeclipes下使用

  在myeclipes下使用可以不用配置web.xml直接将context.xml放入WebRoot的META-INF文件即可

  如图:

? ? ? ? ? ? ? ? ?

?

当前文章://www.fwrl.net/list_89253.html

发布时间:2019-01-16 15:31:14

云微投资安全吗 有没有真正的网上兼职 暴力网赚论坛 哪个网站可以挣钱 如何在百度文库赚钱 如何在网上刷单赚钱 兼职网赚日结工资2018 棋牌游戏赚钱换人民币

编辑:公安道

  

Comments are closed.