900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java配置jndi连接数_JavaWeb:Tomcat下配置数据源(JNDI)连接数据库 | 学步园

java配置jndi连接数_JavaWeb:Tomcat下配置数据源(JNDI)连接数据库 | 学步园

时间:2019-07-04 06:53:24

相关推荐

java配置jndi连接数_JavaWeb:Tomcat下配置数据源(JNDI)连接数据库 | 学步园

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

习惯了以硬编码的形式在程序中建立数据库连接,用完就在finally语句块中close一下就结束了。对于重视数据库连接数的应用来说,这样子做会耗费大量的时间和数据库资源,而且硬编码的形式也不甚灵活。

在Tomcat这个Java Web容器下通过配置DataSource(数据源)对象可以解决上面所述的问题。JDBC中的javx.sql.DataSource接口负责建立于数据库的连接,程序中直接从数据源中获取数据库连接。DataSource对象由Servlet容器Tomcat进行管理,其实获取数据库连接是从连接池中选取空闲连接。它基于Java中的JNDI(Java命名与目录接口)来实现。

配置数据源context.xml:

在Java Web应用的META-INF目录下新建一个context.xml配置文件,其中的元素用于定义JNDI资源,内容如下:

name="jdbc/DBname"

auth="Container"

type="javax.sql.DataSource"

maxActive="100"maxIdle="30"maxWait="10000"

username="root"password="123"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/DBname?autoReconnect=true"

/>

元素的属性说明:

Name:指定Resource资源的JNDI名称;

auth:可选填Container或Application,指定Resource的管理者;

type:指定Resource资源的Java类名;

maxActive:设置数据库连接池中活动状态连接的最大数目,为0则不受限制;

maxIdle:设置数据库连接池中空闲状态连接的最大数目,为0则不受限制;

maxWait:设置数据库连接池中空闲状态连接的最长等待时间,超时则抛出异常,为-1则可无限等待;

username:指定数据库的用户名;

password:指定连接数据库的密码;

driverClassName:指定数据库的JDBC驱动器的Driver实现类名字(这里为MySQL数据库连接);

url:连接数据库的url。

注:可在/conf/server.xml文件中的对应元素中如上配置子元素以供Tomcat容器内的多个Web应用使用。

配置JNDI资源引用web.xml:

Java Web应用中要使用JNDI资源,必须在web.xml中配置对该JNDI资源的引用元素。内容如下:

DBConnection

jdbc/DBname

javax.sql.DataSource

Container

元素的子元素说明:

description:对所引用JNDI资源的描述;

res-ref-name:引用的JNDI资源的名称,与上面元素中的name属性一致;

res-type:引用的JNDI资源的类名称,与上面元素中的type属性一致;

res-auth:引用资源的管理者,上面元素中的auth属性一致;

Web应用中使用数据源:

使用DataSource连接数据库,不再用以下方式来建立到数据库的连接了。

Connectionconn=null;

Class.forName("com.mysql.jdbc.Driver");

StringdbUrl="jdbc:mysql://localhost:3306/DBname";

StringdbUser="root";

StringdbPwd="123";

conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);

而是使用相对简单些的JNDI资源访问方式lookup方法,如下:

ContextsourceCtx=newInitialContext();

DataSourceds=

(DataSource)sourceCtx.lookup("java:comp/env/jdbc/DBname");

conn=ds.getConnection();

注:使用DataSource方式连接数据库,当使用完数据库操作之后调用各种资源对象的close方法时,由Tomcat容器调回这些连接到连接池中进行管理,而不是直接与数据库断开连接。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。