在Spring框架中有如下3种获得DataSource对象的方法:
1.从JNDI获得DataSource.
2.从第三方的连接池获得DataSource.
3.使用DriverManagerDataSource获得DataSource.
[代码] JNDI方式
01 | 1 、SpringJNDI数据源配置信息: |
02 | <bean id= "dataSource" class = "org.springframework.jndi.JndiObjectFactoryBean" > |
03 | <property name= "jndiName" > |
04 | <value>java:comp/env/jcptDataSourceJNDI</value> |
05 | </property> |
06 | </bean> |
07 | jcptDataSourceJNDI是tomcat或者其他应用服务器配置的JNDI. |
08 |
09 | 2 、关于JNDI的配置(tomcat): |
10 | 修改tomcat目录conf/context.xml文件: |
11 | <Resource name= "jcptDataSourceJNDI" auth= "Container" type= "javax.sql.DataSource" |
12 | maxActive= "100" maxIdle= "30" maxWait= "10" username= "tysp" |
13 | password= "12345678" driverClassName= "oracle.jdbc.driver.OracleDriver" |
14 | url= "jdbc:oracle:thin:@192.168.1.35:1521:orcl" /> |
15 |
16 | 3 、通过JNDI获取DataSource: |
17 | Context context = new InitialContext(); |
18 | DataSource ds = (DataSource)context.lookup( "java:comp/env/jcptDataSourceJNDI" ); |
[代码] 使用DBCP连接池获取
01 | 要在Spring中使用DBCP连接池,需要引入commons-collections.jar、commons-dbcp.jar和commons-pool.jar。 |
02 |
03 | <bean id= "dataSource" class = "org.apache.commons.dbcp.BasicDataSource" > |
04 | <property name= "driverClassName" value= "oracle.jdbc.driver.OracleDriver" ></property> |
05 | <property name= "url" value= "jdbc:oracle:thin:@192.168.1.35:1521:orcl" ></property> |
06 | <property name= "username" value= "or_meal" ></property> |
07 | <property name= "password" value= "or_meal" ></property> |
08 | <property name= "maxActive" value= "100" ></property> |
09 | <property name= "maxIdle" value= "30" ></property> |
10 | <property name= "maxWait" value= "10" ></property> |
11 | <property name= "defaultAutoCommit" value= "false" ></property> |
12 | </bean> |
13 |
14 | <bean id= "sessionFactory" |
15 | class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" > |
16 | <property name= "dataSource" > |
17 | <ref bean= "dataSource" /> |
18 | </property> |
19 |
20 | <property name= "hibernateProperties" > |
21 | <props> |
22 | <prop key= "hibernate.dialect" >org.hibernate.dialect.Oracle9Dialect |
23 | </prop> |
24 | <prop key= "show_sql" > true </prop> |
25 | <prop key= "format_sql" > true </prop> |
26 | </props> |
27 | </property> |
28 | <property name= "mappingResources" > |
29 | <list></list> |
30 | </property> |
31 | </bean> |
[代码] 使用DriverManagerDataSource
01 | <bean id= "dataSource" |
02 | class = "org.springframework.jdbc.datasource.DriverManagerDataSource" > |
03 | <property name= "driverClassName" > |
04 | <value>oracle.jdbc.driver.OracleDriver |
05 | </value> |
06 | </property> |
07 | <property name= "url" > |
08 | <value>jdbc:oracle:thin: @192 .168. 1.35 :orcl |
09 | </value> |
10 | </property> |
11 | <property name= "username" > |
12 | <value>or_meal</value> |
13 | </property> |
14 | <property name= "password" > |
15 | <value>or_meal</value> |
16 | </property> |
17 | </bean> |
先下载:
http://surfnet.dl.sourceforge.net/sourceforge/proxool/proxool-0.9.0RC2.zip
web.xml
-------------------------
<servlet>
<servlet-name>proxoolServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>proxooladmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>proxooladmin</servlet-name>
<url-pattern>/proxooladmin</url-pattern>
</servlet-mapping>
-------------------------
proxool.xml
-------------------------
<?xml version="1.0" encoding="UTF-8"?>
<proxool-config>
<proxool>
<alias>blogdb</alias>
<driver-url>jdbc:oracle:thin:@127.0.0.1:1521:ORADB</driver-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<property name="user" value="lizongbo"/>
<property name="password" value="password"/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
</proxool>
</proxool-config>
spring里:
两种配置:
a: <!-- 与上面的proxool以及web.xml里结合使用-->
<bean id="mainDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.logicalcobwebs.proxool.ProxoolDriver</value>
</property>
<property name="url">
<value>proxool.blogdb</value>
</property>
</bean>
b:<!-- 单独的类似dbcp的使用-->
<bean id="mainDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
<property name="driver">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="driverUrl">
<value>jdbc:oracle:thin:lizongbo/password@127.0.0.1:1521:ORADB</value>
<!--用户名和密码写在一起才调用成功,不然会报 调用无效的参数 错误,下面设置用户名和密码的property好像是无效的,其它数据库也是这样
比如mysql的也要把用户名和密码写在url里:<property name="driverUrl" value="jdbc:mysql://localhost:3306/blogdb?user=lizongbo&password=lizongbo" />
-->
</property>
<property name="user"> <!-- 必须在这里也设置,但是 proxool却不使用它,或许是个bug-->
<value>lizongbo</value>
</property>
<property name="password"> <!-- 必须在这里也设置,但是 proxool却不使用它,或许是个bug-->
<value>lizongbo</value>
</property>
<property name="alias">
<value>lizongbo</value>
</property>
<property name="houseKeepingSleepTime">
<value>90000</value>
</property>
<property name="prototypeCount">
<value>5</value>
</property>
<property name="maximumConnectionCount">
<value>100</value>
</property>
<property name="minimumConnectionCount">
<value>10</value>
</property>
<property name="trace">
<value>true</value>
</property>
<property name="verbose">
<value>true</value>
</property>
</bean>
http://surfnet.dl.sourceforge.net/sourceforge/proxool/proxool-0.9.0RC2.zip
web.xml
-------------------------
<servlet>
<servlet-name>proxoolServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>proxooladmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>proxooladmin</servlet-name>
<url-pattern>/proxooladmin</url-pattern>
</servlet-mapping>
-------------------------
proxool.xml
-------------------------
<?xml version="1.0" encoding="UTF-8"?>
<proxool-config>
<proxool>
<alias>blogdb</alias>
<driver-url>jdbc:oracle:thin:@127.0.0.1:1521:ORADB</driver-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<property name="user" value="lizongbo"/>
<property name="password" value="password"/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
</proxool>
</proxool-config>
spring里:
两种配置:
a: <!-- 与上面的proxool以及web.xml里结合使用-->
<bean id="mainDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.logicalcobwebs.proxool.ProxoolDriver</value>
</property>
<property name="url">
<value>proxool.blogdb</value>
</property>
</bean>
b:<!-- 单独的类似dbcp的使用-->
<bean id="mainDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
<property name="driver">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="driverUrl">
<value>jdbc:oracle:thin:lizongbo/password@127.0.0.1:1521:ORADB</value>
<!--用户名和密码写在一起才调用成功,不然会报 调用无效的参数 错误,下面设置用户名和密码的property好像是无效的,其它数据库也是这样
比如mysql的也要把用户名和密码写在url里:<property name="driverUrl" value="jdbc:mysql://localhost:3306/blogdb?user=lizongbo&password=lizongbo" />
-->
</property>
<property name="user"> <!-- 必须在这里也设置,但是 proxool却不使用它,或许是个bug-->
<value>lizongbo</value>
</property>
<property name="password"> <!-- 必须在这里也设置,但是 proxool却不使用它,或许是个bug-->
<value>lizongbo</value>
</property>
<property name="alias">
<value>lizongbo</value>
</property>
<property name="houseKeepingSleepTime">
<value>90000</value>
</property>
<property name="prototypeCount">
<value>5</value>
</property>
<property name="maximumConnectionCount">
<value>100</value>
</property>
<property name="minimumConnectionCount">
<value>10</value>
</property>
<property name="trace">
<value>true</value>
</property>
<property name="verbose">
<value>true</value>
</property>
</bean>