读书人

SSH 多数据源-样例一

发布时间: 2012-11-14 10:12:18 作者: rapoo

SSH 多数据源-样例1

?????????????????? SSH 多数据源-样例1???

?来自:http://www.0djx.com/article/20100520/7719.html

使用SSH框架配置多个数据源,如何解决事务的问题,是需要每个sessionFactory都配备一个事务还是像我这种情况就可以了
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">


<!-- Import Apache CXF Bean Definition -->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />


<!-- 配置多个数据源 -->
<bean id="dataSource" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/doltrip">
</property>
<property name="username" value="root"></property>
<property name="password" value="lituo"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<!-- 数据库的连接超时是否启动删除 -->
<property name="removeAbandoned" value="true"></property>
<!-- 数据库的删除数据库连接的超时时长 -->
<property name="removeAbandonedTimeout" value="60"></property>
<property name="logAbandoned" value="true"></property>
</bean>

<!-- 所有第三方数据的数据源 -->
<bean id="alldataSource" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/alldata">
</property>
<property name="username" value="root"></property>
<property name="password" value="lituo"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<!-- 数据库的连接超时是否启动删除 -->
<property name="removeAbandoned" value="true"></property>
<!-- 数据库的删除数据库连接的超时时长 -->
<property name="removeAbandonedTimeout" value="60"></property>
<property name="logAbandoned" value="true"></property>
</bean>

<!-- 配置驴妈妈的数据源 -->
<bean id="aSource" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/a">
</property>
<property name="username" value="root"></property>
<property name="password" value="lituo"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<!-- 数据库的连接超时是否启动删除 -->
<property name="removeAbandoned" value="true"></property>
<!-- 数据库的删除数据库连接的超时时长 -->
<property name="removeAbandonedTimeout" value="60"></property>
<property name="logAbandoned" value="true"></property>
</bean>


<!-- 配置sessionFactory -->
<!--
<bean id="sessionFactory"
/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/doltrip/model/Department.hbm.xml</value>
<value>com/doltrip/model/Employee.hbm.xml</value>
<value>com/doltrip/model/Device.hbm.xml</value>
<value>com/doltrip/model/SdCard.hbm.xml</value>
<value>com/doltrip/model/DeviceType.hbm.xml</value>
<value>com/doltrip/model/Contract.hbm.xml</value>
<value>com/doltrip/model/PhoneDetail.hbm.xml</value>
<value>com/doltrip/model/SimCard.hbm.xml</value>
<value>com/doltrip/model/Customer.hbm.xml</value>
<value>com/doltrip/model/DeviceMatain.hbm.xml</value>
<value>com/doltrip/model/Role.hbm.xml</value>
<value>com/doltrip/model/Bulletin.hbm.xml</value>
<value>com/doltrip/model/User.hbm.xml</value>
<value>com/doltrip/model/Module.hbm.xml</value>
<value>com/doltrip/model/Usersroles.hbm.xml</value>
<value>com/doltrip/model/Acl.hbm.xml</value>

<value>com/doltrip/model/DevsSims.hbm.xml</value>
<value>com/doltrip/model/DeviceOpLog.hbm.xml</value>
<value>com/doltrip/model/Positions.hbm.xml</value>

</list>
</property>
</bean>

<!-- 配置第三方软件sessionFactory -->
<bean id="alldatasessionFactory"
/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!--
<property name="mappingResources">
<list>

</list>
</property> -->
</bean>

<!-- 配置驴妈妈sessionFactory -->
<bean id="asessionFactory"
/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!--
<property name="mappingResources">
<list>

</list>
</property> -->
</bean>

<bean id="transactionManager"
/>
</property>
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor pointcut="execution(* com.doltrip.service.*.*(..))"
advice-ref="txAdvice" />
</aop:config>

自我分析:

??1:学习一下对于数据源对于异常情况的一个处理:

<!-- 数据库的连接超时是否启动删除 -->
<property name="removeAbandoned" value="true"></property>
<!-- 数据库的删除数据库连接的超时时长 -->
<property name="removeAbandonedTimeout" value="60"></property>
<property name="logAbandoned" value="true"></property>
2:思路

?? 建立数据源

?? 建立SESSION? 此处用同一个sessionFactory十分有问题?

?? 建立transactionManager?? 此处十分有问题?

?? 建立切点(事务)此处十分有问题

?需要编程中检验。

?

?

??

读书人网 >软件架构设计

热点推荐