天天看點

SpringSide3中多資料源配置

applicationcontext.xml中配置

下面是加載外部配置檔案:application.properties

SpringSide3中多資料源配置

<bean  

        class="org.springframework.beans.factory.config.propertyplaceholderconfigurer">  

        <property name="systempropertiesmodename" value="system_properties_mode_override" />  

        <property name="ignoreresourcenotfound" value="true" />  

        <property name="locations">  

            <list>  

                <!-- 标準配置 -->  

                <value>classpath*:/application.properties</value>  

        </property>  

</bean>  

多資料源配置:

SpringSide3中多資料源配置

<!-- 本地資料庫配置 -->  

    <bean id="datasourcecontent" class="com.atomikos.jdbc.atomikosdatasourcebean" init-method="init" destroy-method="close">        

        <property name="uniqueresourcename">        

            <value>jdbc/datasourcecontent</value>        

        </property>        

        <property name="xadatasourceclassname">        

            <value>com.mysql.jdbc.jdbc2.optional.mysqlxadatasource</value>        

        <property name="xaproperties">  

            <props>      

                <prop key="servername">${jdbc.servername}</prop>  

                <prop key="portnumber">${jdbc.portnumber}</prop>      

                <prop key="databasename">${jdbc.databasename}</prop>  

                <prop key="user">${jdbc.username}</prop>      

                <prop key="password">${jdbc.password}</prop>      

            </props>            

        </property>            

        <property name="poolsize">        

            <value>5</value>        

        <property name="maxpoolsize">  

            <value>15</value>  

        <property name="testquery">          

            <value>select 1</value>      

        </property>     

    </bean>  

    <bean id="datasourceindex" class="com.atomikos.jdbc.atomikosdatasourcebean" init-method="init" destroy-method="close">        

            <value>jdbc/datasourceindex</value>        

        <property name="xaproperties">        

                <prop key="servername">${jdbc.servername_index}</prop>      

                <prop key="portnumber">${jdbc.portnumber_index}</prop>      

                <prop key="databasename">${jdbc.databasename_index}</prop>      

                <prop key="user">${jdbc.username_index}</prop>      

                <prop key="password">${jdbc.password_index}</prop>      

            </props>       

        </property>             

        </property>          

hibernate sessionfactory配置:

SpringSide3中多資料源配置

<!-- hibernate配置 -->  

    <!-- 本地資料庫hibernate配置 -->  

    <bean id="sessionfactorycontent" class="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean">  

        <property name="datasource" ref="datasourcecontent" />  

        <property name="namingstrategy">  

            <bean class="org.hibernate.cfg.improvednamingstrategy" />  

        <property name="hibernateproperties">  

            <props>  

                <prop key="hibernate.dialect">org.hibernate.dialect.mysql5innodbdialect</prop>  

                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  

                <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>  

                <prop key="hibernate.cache.provider_class">org.hibernate.cache.ehcacheprovider</prop>  

                <prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache/ehcache-hibernate-local.xml</prop>  

            </props>  

        <property name="packagestoscan" value="com.wiseweb.pom.entity" />  

    <!-- 遠端資料庫hibernate配置 -->  

    <bean id="sessionfactoryindex" class="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean">  

        <property name="datasource" ref="datasourceindex" />  

事務管理器配置:

SpringSide3中多資料源配置

<!-- 事務管理器配置,多資料源jta事務-->  

    <bean id="atomikostransactionmanager" class="com.atomikos.icatch.jta.usertransactionmanager" init-method="init" destroy-method="close">     

        <property name="forceshutdown"><value>true</value></property>     

    </bean>     

    <bean id="atomikosusertransaction" class="com.atomikos.icatch.jta.usertransactionimp">     

        <property name="transactiontimeout" value="300"/>  

    <bean id="transactionmanager" class="org.springframework.transaction.jta.jtatransactionmanager">  

        <property name="transactionmanager" ref="atomikostransactionmanager" />  

        <property name="usertransaction" ref="atomikosusertransaction"/>  

    <!-- 使用annotation定義事務 -->  

    <tx:annotation-driven transaction-manager="transactionmanager"  

        proxy-target-class="true" />  

application.properties檔案:

SpringSide3中多資料源配置

jdbc.driver=com.mysql.jdbc.driver  

jdbc.servername=host  

jdbc.portnumber=port  

jdbc.databasename=databasename  

jdbc.url=jdbc\:mysql\://host\:port/databasename?useunicode\=true&zerodatetimebehavior\=converttonull&characterencoding\=utf-8  

jdbc.username=username  

jdbc.password=password  

hibernate.dialect=org.hibernate.dialect.mysql5innodbdialect  

#mysql version database setting  

jdbc.servername_index=host  

jdbc.portnumber_index=port  

jdbc.databasename_index=databasename  

jdbc.url_index=jdbc\:mysql\://host\:port/databasename?useunicode\=true&zerodatetimebehavior\=converttonull&characterencoding\=utf-8  

jdbc.username_index=username  

jdbc.password_index=password  

#hibernate settings  

hibernate.show_sql=false   

hibernate.format_sql=false  

hibernate.use_second_level_cache=false  

hibernate.use_query_cache=false  

#dbcp settings  

dbcp.maxidle=5  

dbcp.maxactive=40  

jta.properties

SpringSide3中多資料源配置

com.atomikos.icatch.service=com.atomikos.icatch.standalone.usertransactionservicefactory  

com.atomikos.icatch.console_file_name = sm.out  

com.atomikos.icatch.log_base_name = smlog.log  

com.atomikos.icatch.tm_unique_name = com.atomikos.spring.jdbc.tm  

com.atomikos.icatch.serializable_logging=false