首先, 让我们先了解下DriverManager.
管理一组 JDBC 驱动程序的基本服务。
注:DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。
作为初始化的一部分,DriverManager 类会尝试加载在 "jdbc.drivers" 系统属性中引用的驱动程序类。这允许用户定制由他们的应用程序使用的 JDBC Driver。例如,在 ~/.hotjava/properties 文件中,用户可以指定:
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
DriverManager 类的方法 getConnection 和 getDrivers 已经得到提高以支持 Java Standard Edition Service Provider 机制。 JDBC 4.0 Drivers 必须包括 META-INF/services/java.sql.Driver 文件。此文件包含 java.sql.Driver 的 JDBC 驱动程序实现的名称。例如,要加载 my.sql.Driver 类,META-INF/services/java.sql.Driver 文件需要包含下面的条目:
my.sql.Driver
应用程序不再需要使用 Class.forName() 显式地加载 JDBC 驱动程序。当前使用 Class.forName() 加载 JDBC 驱动程序的现有程序将在不作修改的情况下继续工作。
在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。
从 Java 2 SDK 标准版本 1.3 版开始,只有当已授予适当权限时设置日志流。通常这将使用工具 PolicyTool 完成,该工具可用于授予 permission java.sql.SQLPermission "setLog" 权限。
再来了解下DataSource
该工厂用于提供到此 DataSource 对象所表示的物理数据源的连接。作为 DriverManager 工具的替代项,DataSource 对象是获取连接的首选方法。实现 DataSource 接口的对象通常在基于 JavaTM Naming and Directory Interface (JNDI) API 的命名服务中注册。
DataSource 接口由驱动程序供应商实现。共有三种类型的实现:
基本实现 - 生成标准的 Connection 对象
连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。
分布式事务实现 - 生成一个 Connection 对象,该对象可用于分布式事务,大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用,大多数情况下总是与连接池管理器一起使用。
DataSource 对象的属性在必要时可以修改。例如,如果将数据源移动到另一个服务器,则可更改与服务器相关的属性。其优点在于,由于可以更改数据源的属性,所以任何访问该数据源的代码都无需更改。
通过 DataSource 对象访问的驱动程序本身不会向 DriverManager 注册。通过查找操作获取 DataSource 对象,然后使用该对象创建 Connection 对象。使用基本的实现,通过 DataSource 对象获取的连接与通过 DriverManager 设施获取的连接相同。
看看下面的一些简单配置:
1. 在Jboss 下面。 其实可以可以参考 $JBOSS/docs/examples/jca/ **-ds.xml
2. 在Tomcat下 : (从网上找来的, 但看得很清楚。 我怕以后忘记, 就转载了。 原文作者是:
http://www.iteye.com/topic/245596. 如果作者不想转载的话, 可以给我留言我删除。)
1.把DataSource设置到我们的WEB项目中,下面详细的介绍下:
第一步:在我们的WEB项目中的META-INF文件夹下建立一个context.xml
Xml代码
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/bbs"
username="root"
password="root"
maxActive="50"
maxIdle="20"
maxWait="10000" />
</Context>
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/bbs"
username="root"
password="root"
maxActive="50"
maxIdle="20"
maxWait="10000" />
</Context>
第二步:在我们的WEB项目下的WEB-INF文件夹下建立一个web.xml(如果存在了就不用了,直接修改就行了)
(这几天测试了一下,不做这步也可以,O(∩_∩)O哈哈~省事了)
Xml代码
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
第三步:我们就可以用代码来获取Connection对象了
Java代码
package xushun.util;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class DBHelper {
public static Connection getConnection() throws SQLException,NamingException
{
// 初始化查找命名空间
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
// 找到DataSource
DataSource ds = (DataSource)envContext.lookup("jdbc/mysql");
return ds.getConnection();
}
}
package xushun.util;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class DBHelper {
public static Connection getConnection() throws SQLException,NamingException
{
// 初始化查找命名空间
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
// 找到DataSource
DataSource ds = (DataSource)envContext.lookup("jdbc/mysql");
return ds.getConnection();
}
}
2.把DataSource设置到我们的Tomcat中,下面详细的介绍下(测试用的JAVA代码和上面的一样就不帖出了):
这里我查到的设置方法就有了一点区别了。有的人把DataSource设置在Tomcat的server.xml文件的GlobalNamingResources下面,然后在context.xml中去映射。有的直接就写在context.xml中了
先说下在server.xml添加DataSource
第一步:在Tomcat的conf中的server.xml文件中找到Xml代码
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>修改为Xml代码
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/bbs"
auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="20"
maxWait="5000"
username="root"
password="admin"
url="jdbc:mysql://localhost:3306/bbs"
maxActive="100"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>
</GlobalNamingResources>
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/bbs"
auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="20"
maxWait="5000"
username="root"
password="admin"
url="jdbc:mysql://localhost:3306/bbs"
maxActive="100"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>
</GlobalNamingResources>
第二步:在Tomcat的conf文件夹下的context.xml中加入
Xml代码
<ResourceLink name="jdbc/bbs" global="jdbc/bbs" type="javax.sql.DataSource"/>
<ResourceLink name="jdbc/bbs" global="jdbc/bbs" type="javax.sql.DataSource"/>
第三步:就是在WEB项目的WEB-INF中的web.xml添加Xml代码
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
还有就是在Tomcat文档中提到的方法,直接修改context.xml文件了
在Tomcat的conf文件夹下的context.xml中加入Xml代码
<Resource name="jdbc/bbs"
auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="20"
maxWait="5000"
username="root"
password="admin"
url="jdbc:mysql://localhost:3306/bbs"
maxActive="100"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>
<Resource name="jdbc/bbs"
auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="20"
maxWait="5000"
username="root"
password="admin"
url="jdbc:mysql://localhost:3306/bbs"
maxActive="100"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>然后就是在WEB项目的WEB-INF中的web.xml添加Xml代码
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
就是这些了,如果有什么不太清楚的就留言,一起研究下。等以后我在搜集下资料整理出上面用到的XML文件中各个标签的属性及其代表的意思。有兴趣的也可以自己先查下。:-)
<td>JNDI 查找名称</td> <td>关联的引用</td>
<td>java:comp/env</td> <td>应用程序环境条目</td>
<td>java:comp/env/jdbc</td> <td>JDBC 数据源资源管理器连接工厂</td>
<td>java:comp/env/ejb</td> <td>EJB 引用</td>
<td>java:comp/UserTransaction</td><td>UserTransaction 引用</td>
<td>java:comp/env/mail</td> <td>JavaMail 会话连接工厂</td>
<td>java:comp/env/url</td> <td>URL 连接工厂</td>
<td>java:comp/env/jms</td> <td>JMS 连接工厂和目标</td>
<td>java:comp/ORB</td> <td>应用程序组件之间共享的 ORB 实例</td>
3. 不用容器的话, 可以用Spring配置。 如下面清单1
清单1 (c3p0)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- defined the multi-datasource for funtion test -->
<bean id="dataSource_test" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="oracle.jdbc.OracleDriver" />
<property name="jdbcUrl"
value="jdbc:oracle:thin:@ip:1521:schema" />
<property name="user" value="user" />
<property name="password" value="password" />
</bean>
<!-- Transaction manager for a single JDBC DataSource -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource_test" />
</bean>
</beans>
清单2: 代码
BeanFactory facotry = new XMLBeanFactory (new ClassPathResource(spring.xml));
...
分享到:
相关推荐
总的来说,Spring Boot通过自动配置和`@Bean`注解使得`DataSource`的注入变得简单易用。开发者只需要关注数据库连接的相关配置,就可以让Spring Boot自动创建并管理`DataSource`,从而专注于业务逻辑的实现。在项目...
1. **Spring Boot基础**:首先,我们需要了解Spring Boot的基本概念,包括其自动配置特性、起步依赖以及如何创建一个简单的Spring Boot应用。 2. **多数据源配置**:项目会展示如何在Spring Boot中配置多个数据源,...
下面我们将深入探讨iBatis的核心概念、配置以及如何创建一个简单的实例。 首先,iBatis 的主要组件包括:SqlMapConfig.xml(全局配置文件)、Mapper XML 文件(SQL语句和结果映射)和Mapper接口(Java接口)。全局...
**Spring 整合 JPA 简单实例** 在现代的Java开发中,Spring框架与JPA(Java Persistence API)的结合使用已经成为了一个常见的实践,它简化了数据库操作,提供了对象关系映射(ORM)的功能。JPA是Java EE的一部分,...
使用Druid连接池非常简单,只需要在项目中引入Druid依赖,然后通过配置`DruidDataSource`即可。例如: ```java import com.alibaba.druid.pool.DruidDataSource; // 创建DruidDataSource实例 DruidDataSource ...
以下是关于“C#Web窗体类简单应用实例”的详细知识讲解。 1. **C#窗体类基础** C#中的窗体类(System.Windows.Forms.Form)是Windows应用程序中用户界面的基础。但在Web开发中,我们通常使用ASP.NET的Page类或...
在这里,你可能会看到如DataSource、SessionFactory、Service、DAO等bean的配置,它们之间通过依赖注入进行连接。 2. **SpringMVC配置**:`servlet-context.xml`是SpringMVC的配置文件,定义了处理器映射器、视图...
首先,我们需要理解MyBatis和Druid的基本概念。MyBatis是一个轻量级的ORM(对象关系映射)框架,它可以将SQL语句与Java代码解耦,提高开发效率。而Druid是一个高性能、功能丰富的数据库连接池,它提供监控、扩展性...
本篇文章将详细介绍如何在Tomcat5中配置连接池,并通过代码实例进行说明。 一、连接池概念与作用 连接池是预创建并维护一定数量的数据库连接,以便多个请求可以共享这些连接,而不是每次请求都创建新的连接。这种...
本文将深入探讨如何在ASP.NET中实现一个简单的分页实例。 首先,理解分页的基本概念。分页是指将大量数据分成多个部分(页)进行显示,而不是一次性加载所有数据。在ASP.NET中,我们通常会使用GridView、ListView...
这个"一个很详细且简单的SSM开发小案例"提供了完整的配置步骤和实践,适合初学者理解SSM的集成过程。下面将详细阐述SSM框架的核心概念和在案例中的应用。 1. **Spring**:这是一个全面的企业级应用框架,提供了依赖...
本文将深入探讨Ibatis的基本概念、核心配置以及一个简单的实例,帮助读者更好地理解和运用这一工具。 一、Ibatis简介 Ibatis是由Clinton Begin创建的一个开源项目,它并不是一个完整的ORM(对象关系映射)框架,...
以上就是SpringBoot的一些核心概念和可能在"springboot的简单例子"中涉及的技术点。在实际的"demo"项目中,开发者可能会根据需求选择和配置这些特性,以展示SpringBoot的灵活性和便利性。通过这个示例,新手可以更好...
对于Access,我们可以使用以下代码创建一个简单的DataSource实例: ```java import javax.sql.DataSource; import com.microsoft.jdbc.sqlserver.SQLServerDataSource; public class AccessDataSource { private ...
这个经典入门实例旨在为初学者提供一个快速理解MyBatis基本概念和操作方式的平台。通过学习这个实例,你可以掌握如何在实际项目中使用MyBatis进行数据操作。 首先,我们需要了解MyBatis的核心概念。MyBatis的核心是...
下面是一个简单的Java示例,展示了如何使用DataSource获取数据库连接: ```java import javax.sql.DataSource; import java.sql.Connection; public class DBConnectionFactoryExample { private static ...
“书库管理系统”是一个基于VB的简单数据库操作实例,它涵盖了数据库操作中最常见的四个功能:浏览、添加、修改和删除。为了实现这些功能,本实例使用了两个关键控件:Adodc控件用于链接数据库,而MSHFlexGrid控件则...
通过理解这个简单的示例,你可以掌握MyBatis的核心概念,包括配置、Mapper XML文件、SQL映射以及如何与Java代码交互。 首先,我们需要在项目中引入MyBatis的依赖库。通常,这可以通过Maven或Gradle的依赖管理工具来...
4. 初始化DataSource实例,设置从配置文件中获取的连接参数。 5. 应用程序就可以通过DataSource来获取和释放数据库连接,进行数据库操作。 这种技术在多租户系统、微服务架构或需要支持多种数据库的应用中特别有用...