多数据源 更新 spring jta java jotm
代码下载 :http://download.csdn.net/download/knight_black_bob/8816323
对比 下面的 多数据库操作 http://knight-black-bob.iteye.com/blog/2212872
大家 可以 感受一下 优缺点………
applicationContext.xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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"
default-autowire="byName"
>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:db-config.properties"></property>
</bean>
<!-- 引用Spring内部所提供的对JOTM支持的工厂类 -->
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" />
<!-- 配置JTA事务管理器, 并在管理器中使用上面所配置的JOTM -->
<bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="jotm" />
</bean>
<!-- 配置多个数据源 -->
<!--第一个数据源,采用XAPool链接池-->
<bean id="dataSourceA" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource">
<bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager" ref="jotm" />
<property name="driverName" value="${driverClassName}" />
<property name="url" value="${url1}" />
</bean>
</property>
<property name="user" value="${username1}" />
<property name="password" value="${password1}" />
</bean>
<!--第二个数据源,采用XAPool链接池-->
<bean id="dataSourceB" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource">
<bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager" ref="jotm" />
<property name="driverName" value="${driverClassName}" />
<property name="url" value="${url2}" />
</bean>
</property>
<property name="user" value="${username2}" />
<property name="password" value="${password2}" />
</bean>
<!-- 根据不同的数据源配置两个jdbcTemplate -->
<bean id="jdbcTemplateA" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSourceA" />
</bean>
<bean id="jdbcTemplateB" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSourceB" />
</bean>
<!-- JTA事务传播特性 -->
<tx:advice id="txAdviceJTA" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="create*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="insert*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="del*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor pointcut="execution(* com.baoy.service..*(..))" advice-ref="txAdviceJTA" />
</aop:config>
</beans>
applicationContext-dao.xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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"
default-autowire="byName"
>
<bean id="userDao" class="com.baoy.daoImpl.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplateA" />
</bean>
<bean id="providerDao" class="com.baoy.daoImpl.ProviderDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplateB" />
</bean>
</beans>
applicationContext-service.xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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"
default-autowire="byName"
>
<bean id="userService" class="com.baoy.serviceImpl.UserServiceImpl"></bean>
</beans>
applicationContext-action.xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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"
default-autowire="byName"
>
<bean id="userAction" class="com.baoy.action.UserAction" scope="prototype"></bean>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
id="WebApp_9" version="2.4">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>/common/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
package com.baoy.action;
import com.baoy.base.action.BaseAction;
import com.baoy.bean.User;
import com.baoy.service.UserService;
public class UserAction extends BaseAction{
private UserService userService;
public String doRegister(){
User user = new User();
user.setUserid(888888);
user.setUsername(888888+"");
user.setUserpswd(888888+"");
user.setNickname(888888+"");
user.setContacts(888888+"") ;
user.setTelephone(888888+"");
user.setProvinceid(888888);
user.setEnterprise(888888+"");
user.setRegtime("2015-02-17 16:49:00");
user.setRoleid(1);
user.setSpid(888888+"");
user.setSpkey(888888+"");
userService.regist(user);
return "success";
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
package com.baoy.bean;
public class Provider {
//spid,spkey,user_id,company,address,province_code,insert_time
private String spid; // '厂商ID',
private String spkey; //'厂商密钥',
private int userId ; //'用户名',
private String company; //'厂商名称',
private String address; // '厂商地址',
private int provinceCode; // '所在省份,外键',
private String insertTime;
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append (getClass().getName().substring(getClass().getName().lastIndexOf(".")+1, getClass().getName().length()));
sb.append(":[");
sb.append("\"spid\":\"" +spid+"\"," );
sb.append("\"spkey\":\"" +spkey+"\"," );
sb.append("\"userId\":\"" +userId+"\"," );
sb.append("\"company\":\"" +company+"\"" );
sb.append("\"address\":\"" +address+"\"," );
sb.append("\"provinceCode\":\"" +provinceCode+"\"," );
sb.append("\"insertTime\":\"" +insertTime+"\"" );
sb.append("]");
return sb.toString() ;
}
public String getSpid() {
return spid;
}
public void setSpid(String spid) {
this.spid = spid;
}
public String getSpkey() {
return spkey;
}
public void setSpkey(String spkey) {
this.spkey = spkey;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getProvinceCode() {
return provinceCode;
}
public void setProvinceCode(int provinceCode) {
this.provinceCode = provinceCode;
}
public String getInsertTime() {
return insertTime;
}
public void setInsertTime(String insertTime) {
this.insertTime = insertTime;
}
}
package com.baoy.bean;
public class User {
//userid,username,userpswd,nickname,contacts,telephone,enterprise,regtime,provinceid,roleid,spid,spkey
private int userid;
private String username;
private String userpswd;
private String nickname;
private String contacts;
private String telephone;
private String enterprise;
private int provinceid;
private String regtime;
private int roleid;
private String spid;
private String spkey;
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append (getClass().getName().substring(getClass().getName().lastIndexOf(".")+1, getClass().getName().length()));
sb.append(":[");
sb.append("\"userid\":\"" +userid+"\"," );
sb.append("\"username\":\"" +username+"\"," );
sb.append("\"userpswd\":\"" +userpswd+"\"," );
sb.append("\"nickname\":\"" +nickname+"\"" );
sb.append("\"contacts\":\"" +contacts+"\"," );
sb.append("\"telephone\":\"" +telephone+"\"," );
sb.append("\"enterprise\":\"" +enterprise+"\"," );
sb.append("\"provinceid\":\"" +provinceid+"\"" );
sb.append("\"regtime\":\"" +regtime+"\"," );
sb.append("\"roleid\":\"" +roleid+"\"," );
sb.append("\"spid\":\"" +spid+"\"," );
sb.append("\"spkey\":\"" +spkey+"\"" );
sb.append("]");
return sb.toString() ;
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpswd() {
return userpswd;
}
public void setUserpswd(String userpswd) {
this.userpswd = userpswd;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getContacts() {
return contacts;
}
public void setContacts(String contacts) {
this.contacts = contacts;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEnterprise() {
return enterprise;
}
public void setEnterprise(String enterprise) {
this.enterprise = enterprise;
}
public int getProvinceid() {
return provinceid;
}
public void setProvinceid(int provinceid) {
this.provinceid = provinceid;
}
public String getRegtime() {
return regtime;
}
public void setRegtime(String regtime) {
this.regtime = regtime;
}
public int getRoleid() {
return roleid;
}
public void setRoleid(int roleid) {
this.roleid = roleid;
}
public String getSpid() {
return spid;
}
public void setSpid(String spid) {
this.spid = spid;
}
public String getSpkey() {
return spkey;
}
public void setSpkey(String spkey) {
this.spkey = spkey;
}
}
package com.baoy.daoImpl;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import com.baoy.bean.Provider;
import com.baoy.dao.ProviderDao;
public class ProviderDaoImpl extends JdbcDaoSupport implements ProviderDao{
@Override
public int saveProvider(Provider provider) {
String sql = "insert into provider(spid,spkey,user_id,company,address,province_code,insert_time) values (?,?,?,?,?,?,?)";
return this.getJdbcTemplate().update(sql,new Object[] {provider.getSpid(),provider.getSpkey(),provider.getUserId(),provider.getCompany(),provider.getAddress(),provider.getProvinceCode(),provider.getInsertTime()});
}
}
package com.baoy.daoImpl;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import com.baoy.bean.User;
import com.baoy.dao.UserDao;
public class UserDaoImpl extends JdbcDaoSupport implements UserDao{
@Override
public int saveUser(User user) {
String sql = "insert into user(userid,username,userpswd,nickname,contacts,telephone,enterprise,regtime,provinceid,roleid,spid,spkey) values (?,?,?,?,?,?,?,?,?,?,?,?)";
return this.getJdbcTemplate().update(sql, new Object[]
{user.getUserid(),
user.getUsername(),
user.getUserpswd(),
user.getNickname(),
user.getContacts() ,
user.getTelephone(),
user.getEnterprise(),
user.getRegtime(),
user.getProvinceid(),
user.getRoleid(),
user.getSpid(),
user.getSpkey()});
}
}
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!