CMP DataSource问题,寻求解决方案

05-08-02 haiia
系统结构:servlet + ejb(sessionBean, CMP) + dao

orcale + weblogic

应客户要求,对每个地区,在orcale下建立一个user,每个user下的表结构相同,只是保存不同地区的数据。这样的话,就要针对每个地区,建立一个domain,其中只是connection pool连接到不同的orcale user 上。

随着项目的大面积推广,达到几十个地区,这样就要建立几十个domain,维护起来很不方便。

现在的需求:

只建立一个domain,每一个地区建立一个connection pool 和 dataSource,然后再这个域上发布系统。

问题是:由于cmp绑定了dataSource,没有找到动态切换dataSource的法。

目前想到的办法是:对每一个地区,复制一份cmp和cmp模板,只改其中的dataSource,在返回jndi时判断user返回不同的jndi。但是这样解决实在是不雅。

所以向高手寻求解决方案

banq
2005-08-02 17:53
每个CMP一个jar包,jar包中CMP配置成不同的Datasource,这就是EJB组件的复用,代码无需改变,只要变得配置即可。

好的设计方案前提首先是你需要明确业务变化的是什么?不变的是什么?这个原则是GoF设计模式告诉我们。

如果你的地区属于变化部分,不断在增长,那么使用JMS实现分布式事务也许更适合你。

haiia
2005-08-02 19:42
谢谢板桥的回复,

还有一点不明白 :“每个CMP一个jar包,jar包中CMP配置成不同的Datasource” ,比如一个cmp,是不是一个地区,要打一个包,只是其中的配置不同,然后发布。但是通过jndi取该cmp时,怎么区分不同的cmp?

这是较老的系统,刚接手,对cmp实在是不熟,望板桥先生给与详细的答复

猜你喜欢