关于数据源
实际上J2EE的数据源就是对连接池的一个封装。把数据库连接池发布为JNDI资源,就可以像访问其他的JNDI资源一样,通过JNDI名字来方便的获取容器管理的资源,只不过这次返回的是一个特定类型的资源Connection实例。
关于连接池
在程序开发的时候,经常接触到一个核心的概念就是池(Pool)。什么是池呢,从字面上理解就是一个大的盛水的容器,把水放入池中,以后就可以随取随用,也就不用每次喝水都去河里或者井里挑水了。哈哈,比喻的还算形象吧。程序开发中的Pool的作用和水池非常相似,用一句话概括就是:把一些需要耗费很大的代价(cost)来获取的,常用的资源,用Pool的方式来统一管理,这就是池。
常用的池有 对象池 线程池 数据库连接池等等。
关于数据库连接池
数据库连接池是需要托管的,一般来说,连接池是由APP SERVER来创建和维护的,只要在服务器中配置好连接池的属性,连接池的创建、维护,数据源的维护,都是APP SERVER的事情,任何APP SERVER中的对象,都可以通过数据源来访问连接池中的数据库连接对象(Connection实例)。
tomcat数据源配置
数据源也是一种JNDI资源,可以在服务器的全局资源中添加一个数据源
(一)在server.xml的<GlobalNamingResources>节点下增加一个新的资源
location: $(CATALINA_HOME)/conf/server.xml
<GlobalNamingResources>
<Resource name="jdbc/mysql" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root"
password="962500"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/emr?autoReconnect=true"/>
</GlobalNamingResources>
(二)因为注册的是一个全局资源,哪个应用需要访问这个资源,都需要在应用的描述文件中标注一下
location:$(CATALINA_HOME)/conf/Catalina/localhost/***.xml
<Context path="/emr"
docBase="C:/Documentsand Settings/suntao/workspace/Emr_web/webContent">
<ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource"/>
</Context>
这样,在应用里就可以很方便的通过数据源注册的JNDI名字来获取数据库连接了。