Spring配置dataSource(数据源)

1.本地配置
配置org.apache.commons.dbcp.BasicDataSource,如下配置即可:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="maxActive" value="20" />
    <property name="maxIdle" value="10" />
    <property name="minIdle" value="2" />
</bean>

2.weblogic配置数据源
将weblogic.jar包导入到项目中,不到包会报找不到weblogic.jndi.WLInitialContextFactory类的错误,进行如下配置:

<bean id="srmJndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
        <props>
            <prop key="java.naming.factory.initial">${java.naming.factory.initial}</prop>
            <prop key="java.naming.provider.url">${java.naming.provider.url}</prop>
            <prop key="java.naming.security.principal">${java.naming.security.principal}</prop>                
            <prop key="java.naming.security.credentials">${java.naming.security.credentials}</prop>
        </props>
    </property>
</bean>

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="${jdbc.jndiName}" />
    <property name="jndiTemplate" ref="srmJndiTemplate" />
</bean>

具体的配置参数如下:

java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://134.64.208.94:7563,134.64.208.96:7563//weblogic地址
java.naming.security.principal=weblogic//weblogic登录名称
java.naming.security.credentials=logicweb//weblogic登录密码
jdbc.jndiName=srmDataSource//jndiName名称

若为配置访问同一应用服务器的数据源可以进行如下配置:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>jdbc/cqccms</value>
    </property>
</bean>

3.tomcat配置数据源
1)单个应用独享数据源
在Tomcat的server.xml找到工程的Context节点,添加一个私有数据源,优点:简单,缺点,重用性查,配置如下:

<Context docBase="Web" path="/Web" reloadable="true" source="org.eclipse.jst.jee.server:WebApp">
<Resource name="jndi/testDB"   //指定的jndi名称,会用于spring数据源bean的配置和
            auth="Container"   
            type="javax.sql.DataSource"   //数据源床型,使用标准的javax.sql.DataSource
            driverClassName="com.mysql.jdbc.Driver"   //JDBC驱动器
            url="jdbc:mysql://localhost:3306/test"   //数据库URL地址
            username="root"   //数据库用户名
            password="root"   //数据库密码
            maxActive="20"   
            maxIdle="10"   //最大的空闲连接数
          maxWait="10000"//当池的数据库连接已经被占用的时候,最大等待时间
            removeAbandoned="true"
            removeAbandonedTimeout="180"
            logAbandoned="true"//被丢弃的数据库连接是否做记录,以便跟踪
            factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
/>  
</Context>

2)配置全局JNDI数据源,应用到单个应用
所有将数据库连接池commons-dbcp.jar所依赖的包导入到tomcat安装目录的lib目录下,不导入会报错。
配置全局JNDI数据源,应用到单个应用数据源:

<Resource name="jdbc/testDB"       //指定的jndi名称,会用于spring数据源bean的配置和ResourceLink的配置
               type="javax.sql.DataSource"   //数据源床型,使用标准的javax.sql.DataSource
               driverClassName="com.mysql.jdbc.Driver"    //JDBC驱动器 
               url="jdbc:mysql://localhost:3306/test" //数据库URL地址             
               username="test"     //数据库用户名
               password="test"   //数据库密码
               maxIdle="40"   //最大的空闲连接数
               maxWait="4000" //当池的数据库连接已经被占用的时候,最大等待时间
               maxActive="250" //连接池当中最大的数据库连接
               removeAbandoned="true" 
               removeAbandonedTimeout="180"
               logAbandoned="true" //被丢弃的数据库连接是否做记录,以便跟踪
               factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" />

配置 ResourceLink:
a)tomcat安装目录下的conf/context.xml,把全局的resource直接公开给该tomcat下的所有web工程,在Context节点中加入:

<ResourceLink global="jdbc/testDB" name="jdbc/testDB" type="javax.sql.DataSource"/> 

注:此方法会将数据源公布于tomcat下所有应用。
b)tomcat安装目录下的conf/server.xml,该方法可以指定把哪些source绑定到哪个web工程下,但貌似tomcat6.0不支持,tomcat5.5倒可以

<context docBase="/web/webapps/phoenix" path="" reloadable="false"> 
     <ResourceLink global="jdbc/testDB" name="jdbc/testDB" type="javax.sql.DataSource"/>
</context>

c)安装目录下的conf/localhost/下建立一个xml文件,文件名是.xml。比如工程名为test,则该xml名为test.xml

<?xml version="1.0" encoding="UTF-8"?>
<context>   
     <ResourceLink global="jdbc/testDB" name="jdbc/testDB" type="javax.sql.DataSource"/>       
</context>

d)tomcat安装目录下的\webapps\test\META-INF\context.xml的Context节点中增加:

<ResourceLink global="jdbc/testDB" name="jdbc/testDB" type="javax.sql.DataSource"/>

3)引用数据源
a) 在web项目的web.xml中加入资源引用:(可省略)

<resource-ref>   
    <description>JNDI DataSource</description>
    <res-ref-name>jndi/testDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>  

启动的时候加载tomcat 配置的JNDI 公开数据源,其中res-ref-name值要和server.xml 、context.xml的name值一致。
b) 在web项目中配置spring数据源bean信息

<bean id="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">
    <propertyname="jndiName">    
        <value>java:comp/env/jndi/testDB</value>
    </property> 
</bean>

猜你喜欢

转载自blog.csdn.net/qq_36831305/article/details/82590937