CMP开发如何支持多数据库????????

jia2612 04-01-15

一些集团化应用的项目如果采用CMP开发的的话,怎样使CMP支持多数据库? 比如根据登陆人的身份不同,其操作的数据库也不同,比如登陆用户A访问的是A数据库,其增、删改也是针对A数据库的,而与登陆用户B联系的是数据库B,请问CMP如何实现???????????

happlyin
2004-01-16 10:29

因为cmp中使用的数据库连接,都是来自应用服务器的数据库连接池和数据源。在配置数据库连接池时就已经指定了数据库服务器的相关信息。而cmp也是在配置文件中指定数据库连接池。所以要想实现你的需求,我个人认为不太可能。因为你每类用户登录后,使用不同的数据库,这个切换动作需要应用服务器进行配置,或者需要在cmp配置信息中进行配置。

我个人拙见。如果有人知道其他方法,我也想知道。

banq
2004-01-18 15:25

做不同的CMP即可,不同的CMP对应的Datasource不一样。

CMP在处理数据一致性方面是公认的权威。

jia2612
2004-01-18 17:04

banq大哥,我认为另外开发CMP可能行不通,因为你不可能针对每个数据都去做一套CMP,因为这些数据库都是一样的,只是每个数据库由各自公司独立管理而已,看来如果碰到这种情况只能用JDBC了

happlyin
2004-01-19 11:41

这个问题的关键点:
不同用户使用的业务功能是一样的,只是业务操作的数据源是不一样的。

也就是说,数据源需要在运行时动态的指定。而cmp实在配置时指定的,也就不是在运行时指定的(我不确定,cmp是否可以动态指定数据源)。

这种情况可以考虑用hibernate,动态运行时,根据一定的规则,去取得不同的数据源的session(hibernate中的概念)。这样就可以动态实现操作不同的数据源。
而且hibernate也是o/r mapping,功能比cmp要强,只是数据库的事务性支持不如cmp,其他的hsql要比ejb-ql要强得多。