`
sd_zyl
  • 浏览: 43261 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ha-jdbc入门demo

阅读更多
ha-jdbc干什么就不介绍了,请直接移步官方网站。
运行本demo,需要在mysql中创建如下表:
CREATE TABLE `account` (
   `ACC_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
   `ACC_FIRST_NAME` varchar(50) COLLATE utf8_bin DEFAULT NULL,
   `ACC_LAST_NAME` varchar(50) COLLATE utf8_bin DEFAULT NULL,
   `ACC_EMAIL` varchar(50) COLLATE utf8_bin DEFAULT NULL,
   PRIMARY KEY (`ACC_ID`)
 ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

注意两个数据库中的表都要建立。下面我在本地数据库中创建了2个数据库,一个是zyl,另一个zylxc。两个数据库中都用上面的语句初始化数据库表。

下面是ha-jdbc-claster.xml配置:
<ha-jdbc>
	<!--<distributable config="" stack="sequencer" /> -->
	<sync id="diff" class="net.sf.hajdbc.sync.DifferentialSynchronizationStrategy" >
		<property name="fetchSize">1000</property>
		<property name="maxBatchSize">100</property>
	</sync>
	<cluster default-sync="diff" balancer="load" meta-data-cache="none" 
		dialect="net.sf.hajdbc.dialect.MySQLDialect" 
		transaction-mode="parallel" 
		auto-activate-schedule="0 * * ? * *" 
		failure-detectschedule="0 * * ? * *">
	    <datasource id="database1">
			<name>org.apache.commons.dbcp.BasicDataSource</name>
			<property name="defaultReadOnly">false</property>
			<property name="url">jdbc:mysql://localhost:3306/zyl</property>
			<property name="validationQuery">SELECT 1</property>
			<property name="username">root</property>
			<property name="password">123456</property>
			<property name="maxIdle">3</property>
			<property name="maxActive">15</property>
			<property name="driverClassName">com.mysql.jdbc.Driver</property>
			<property name="minIdle">5</property>
			<property name="defaultAutoCommit">true</property>
			<property name="testOnBorrow">true</property>
			<property name="initialSize">5</property>
	    </datasource>
	    <datasource id="database2">
			<name>org.apache.commons.dbcp.BasicDataSource</name>
			<property name="defaultReadOnly">false</property>
			<property name="url">jdbc:mysql://localhost:3306/zylxc</property>
			<property name="validationQuery">SELECT 1</property>
			<property name="username">root</property>
			<property name="password">123456</property>
			<property name="maxIdle">3</property>
			<property name="maxActive">15</property>
			<property name="driverClassName">com.mysql.jdbc.Driver</property>
			<property name="minIdle">5</property>
			<property name="defaultAutoCommit">true</property>
			<property name="testOnBorrow">true</property>
			<property name="initialSize">5</property>
	    </datasource>
	</cluster>
</ha-jdbc>


使用springMVC进行测试,测试代码:
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		Account a = new Account();
		a.setFirstName("zhang");
		a.setLastName("yuliang");
		//插入一条记录
		accountDao.insert(a);
		//查询刚刚插入的记录,这里只取一条
		List<Account> list = accountDao.getAccountListByAccount(a);
		request.setAttribute("account", list.get(0));
		//更新刚刚插入的记录
		a.setId(a.getId());
		a.setLastName("san");
		accountDao.update(a);
		
        return new ModelAndView("index"); 
	}

在上面的测试代码中您可以选择注释后分别一条一条进行测试,您会看到2个数据库中的表进行了同步,如果数据库不在一台机器上面,您可以随意停掉其中一台mysql,然后重启后,新插入的数据会进行自动同步过去。spring mvc其它废话少说,直接上demo附件。
分享到:
评论
4 楼 zhang2008081110 2013-01-31  
是不是jdk的版本原因?我的是1.5,也试过1.6,还是不得行,1.6报的就是这个错,1.5报的是版本问题.求解释,急...谢谢!!!
3 楼 zhang2008081110 2013-01-31  
为什么我跑不起来.?
报错:
Error creating bean with name 'sqlMapClient' defined in class path resource [datasource.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [net.sf.hajdbc.sql.DataSource] to required type [javax.sql.DataSource] for property 'dataSource'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [net.sf.hajdbc.sql.DataSource] to required type [javax.sql.DataSource] for property 'dataSource': no matching editors or conversion strategy found
2 楼 sd_zyl 2012-10-05  
引用
你的DEMO 我下载也做了测试。结果只有zyl中有一笔数据。而zylxc中一笔也没有。
两个数据库是在同一台机子的。

应该不会的。我本地测试通过的。请仔细检查。
1 楼 zhuyun_321 2012-09-27  
你好,sd_zyl
你的DEMO 我下载也做了测试。结果只有zyl中有一笔数据。而zylxc中一笔也没有。
两个数据库是在同一台机子的。

相关推荐

Global site tag (gtag.js) - Google Analytics