这几天,一直非常苦恼,Jwebap的原先的配置设计需要改造,新的方案一直拿捏不定。先说说Jwebap的一些配置要求:
由于Jwebap的Plug-in架构,配置的要求会更高,主要我想达到以下几个目的:
1)配置的形式,可以由第三方扩展者进行扩展
以后我希望每个plug-in就是一个jar,jar里面带有部署描述,描述jar包实现了几个Component,有什么属性。
2)要能够较好的适应配置的结构变化,由于目前Jwebap配置内容多是由组件主动获取的形式获得,配置结构的与组件的依赖较大
3)解决与jdom的依赖,解决jdom在中间件环境下不兼容的问题
4)能够方便的对配置文件进行读写
主要是想通过控制台可以修改部署的Component的属性
再说说暂定的方案:
1)配置文件定义:jwebap包含自己的配置文件jwebap.xml,在jwebap.xml里面包含两个标签
<component>
<class></class>
<property name=''></property>
<property name=''></property>
...
</component>
...
<dispatcher>
<class></class>
<url-pattern></url-pattern>
<property name=''></property>
<property name=''></property>
...
</dispatcher>
对于plug-in对应的jar包里面的部署描述包含如上component定义的结构。
对于组件,配置是透明的,组件主要依赖于三种Context:ComponentContext,DispatcherContext,RuntimeContext。Context的构造由启动时根据配置API获取配置,初始完成。对于RuntimeContext包含所有从各个配置文件里面加载近来的Component对象,plug-in的加载可以采用组合模式完成。
2)配置API:所有的配置项都建立对应的java模型,模型对象采用seter设置配置参数。参看org.jwebap.config.model.*。然后建立配置文件与java对象的映射规则,这里采用了apache的Digister项目完成,它是一个非常好的XML映射工具,下面一篇再跟大家简单介绍下,多亏了这个项目。
不过现在对于配置的保存这块,现在还想不到什么好办法,直接去改plug-in的部署描述,似乎不是很合适。
web site:
jwebap.sf.net
blog:
leadyu.iteye.com