请教Banq大哥和各们数据同步问题??

07-05-11 xysniper
大家好,现在有两个容器,都是JBOSS,但分别部署着两个项目:

项目一:核心业务EJB3的实体BEAN

项目二:MIS后台Hibernate

这两个系统使用同一个数据库表

我的问题:

由于BEAN有缓存,如果后台MIS对同一个数据表中的数据做了修改,比如,有一个业务状态下线,MIS将该业务设为下线,但EJB那边由于缓存的问题,它并不知道该业务已下线了,还在使用该业务,除非重新读取数据库才知道下线了

现在的问题是MIS改后的数据如何同步给EJB(EJB修改的数据,不需要同步给MIS,因为MIS的HIBERNATE缓存可以设为0)?

banq
2007-05-14 09:45
如果两台服务器都使用JBoss,可以配置一下JBoss cache使其支持分布式功能,同时配置Hibernate的缓存为JBoss cache。

其他办法可在程序中,通过JMS等通讯方式在两台机器之间进行更新提醒,不过相对复杂。

xysniper
2007-05-15 23:10
多谢BANQ大哥的回答,你说的第一个解决方案是EJB3的核心业务在后台MIS在同一个集群内实现的,不过我忘记了说一个条件,就是使用EJB3的核心业务和后台MIS系统不仅不在同一个机器上,还不在同一个集群内,EJB3的核心业务是以集群的形式署在多台服务器上,而MIS后台是单独在另外一个服务器上,此服务器不在集群范围内,请问是不是只能通过JMS实现数据同步呢?

gougou3250
2007-05-17 13:49
用jms吧 简单又好用

xysniper
2007-05-19 00:21
我们要求实时性比较高,不知道JMS能不能实现?

gougou3250
2007-05-19 10:59
同步与异步

同步是向服务器发出请求,然后就傻等,直到服务器返回结果,中间不可以做其他事

异步是向服务器发请求,你有一个异步方法来处理服务器返回的结果,不需要傻等,中间可以东搞搞西搞搞

当然,异步的也是可以设置同步,让你在等的那段时间不可以做其他操作,象ajax就有个boolean值让你选是同步还是异步.jms好象没有

其实两者并没有什么区别,当用异步来处理的时候,可能客户并不知道已经向服务器发请求了,那你可以在页面出一个提示(已经想服务器发送请求,请等待).

spikeme
2009-04-18 20:32
你在MIS系统中,当业务下线时,发个消息通知EJB集群里的各个服务器。然后让对象的JAVABEAN更新状态就可以了。实现方法:可以在EJB容器里写个SERVLET,接收MIS来的消息。

usejava
2009-04-20 12:01
提了这么多架构和设计来支持分布,那个可以解决同步问题,不要告诉我还要自己实现。

猜你喜欢