SmartGWT 里动态DataSource的实现思路

这个思路其实是为了解决title 中文问题的时候发现的。当时想着,实在不行我就自己做

一个DataSource的定义。SmartGWT 里,DataSource就是它的元数据核心。

这里,DataSource实际上有两个,

其一是客户端的 com.smartgwt.client.data.DataSource,这部分是开源的,可以自己随意创建。

另一个是服务器端的 com.isomorphic.datasource.DataSource, 这个是SmartGwtEE 里面的

内容,非开源的,而且只能在Server端使用,不能在客户端使用。

 

而我想做的动态DataSource,指的是在客户端定义一个DataSource,这里都可以用java类来描述

各个Field,包括类型什么的。而在服务端,根据客户端定义的DataSource自动生成一个服务端的

DataSource,这样就可以根据需要进行灵活的定义,而且所有的定义都通过java代码来进行,又可以

进行编译期检查,还可以绕过中文乱码问题。

 

当然,现在中文乱码问题解决了,这个需求就显得不那么迫切。把思路记录一下,以后有需要的时候再

来用这个思路实现动态的DataSource。

 

1. 在server.properties里面,定义缺省的 datasource repo:

datasources.repo.default: org.simon.xxx.server.MyDSRepo

 

2. MyDSRepo 继承自FileSystemDSRepo,这个实际上是SmartGWT 缺省的DSRepo

 

3. 在public DataSource loadDS( String dsName) 方法当中,判断是不是动态的DataSource ,

如果是,那么根据客户端的DataSource Class是否有变化,来决定是否生成一个新的 ds.xml文件,

然后还交给 super来装载。

 

如何判断客户端的DataSource Class是否有变化,是个问题。当然也可以不生成ds.xml文件,但是这样

就不能利用 DSRepo的cache机制了。具体的实现,等需要时再说,目前没碰到这种需求,但是不得不说,

SmartGwtEE还是为扩展留下了各种机制的。

 

你可能感兴趣的:(xml,cache)