进入项目就一直忙忙碌碌,朦胧中已经有近一年没写Blog了,放下手中的笔,体息一下,觉得是乎应该对自己最近的工作总结一下,拿起键盘,却又不知道具体要说些什么,似乎有很多要写的,很散,思维还有点乱......,还是就由着思绪来吧 ~~
我所在的项目由于一期使用的是一个公司的开发平台,因为其平台自身的功能限制无法扩展、难以维护且系统可控制度极低,因此,客户方决定在二期重新设计架构并在新的架构上完全重新开发,而我正是在为新的架构做技术预研,其中形形色色的问题乱如麻。
首先是JSF,我们采用的是MyFaces的实现,服务器WAS5.1,JDK1.4.1.2,在发布JSF应用时的第一个问题就是JSF容器无法正常初始化。这个问题很容易定位,就是由于Servlet 2.3规范对Lisener和Servlet的初始化顺序要求不严格,从而使不同厂商有着不同的实现导致的。但因为有朋友也在使用JSF,且服务器版本也一致,他们没有问题,偏偏我整死也跑不通,所以,开始觉得自己的判断可能不对,但郁闷的是用google搜索半天没搜到解决方案,最后没折了,只好自己去打开JAR包看看源代码,结果发现里面有个MyFacesServlet,打开一看内容,简直想一头撞死,原来该类解决了2.3规范问题,从而他可以替换Linsener类的初始化职责。他在被加载时首先会检查StartupServletContextListener有没有正常初始化,如果未初始化则调用StartupServletContextListener进行初始化。看来有时候还真是不能偷半点懒,要相信自己的判断。
其次是JSTL,我最初用的是apache的参考实现1.1版本,结果整死都无法使用,总是报taglib无法解析,到网上查了半天,没有一个人说具体的解决方案,没办法,从来没用过JSTL啊,新手总是会碰上一脸灰的,后来打开看Tablib的版本,天啦,人家要求的是JSP 2.0,而我的还是基于2.3规范的1.2,当然无法解析了,然后从新从网上DOWN个jstl 1.0下来,一跑就通!!唉,真是没办法,在网络上,有些问题一搜就到,而有些看似简单的问题却能把人折腾个半死,结果发现你还是要自己定下心来去查,千万不要全指望别人。又受教了。
再次SpringWebflow,到目前为此,webflow还处于1.0早期版本,现在还不能确定1.0正式版何时推出,做为我们来说,也算是一次大胆偿试,说实话,当前的webflow版本功能还不能足以应用到项目中来,但我相信他的正式版应该会很快推出,所以就抢先偿试了,偿试中的问题就不说了,就说说它现在的缺陷吧,
1.支持流程级变量创建,却无法给变量赋值,郁闷,这么重要的功能居然还没提供
2.调用POJO方法时,必需要有参数,且参数必需是在flowScope上下文里,连静态常量参数都不支持,又狂郁闷了一把。在流程里,这是再常用不过的功能了,居然没提供,希望正式版快快出来,并补上这些缺陷。要不然,他是不可能进入实际项目应用的。偶现在真是想修改他的代码,把这些功能通通加进去。。,但最终还是得先抑制住冲动---再等等看吧。。。
3.与JSF集成的JSP里的非受管Bean的普通JSP参数无法在flowScope里获得,这一点不能肯定,有可能是转发方式的问题,希望能修改该问题。
4.流程里的表达式灵活性太差,尽管是采用OGNL做的解析,但还是只能写一些极其简单的逻辑表达式,稍微复杂一点的----别想。这一点,也有可能是我还没用好的缘故,需进一步证实
最后就是自定义Data Table UI组件了,我们要同时支持列表分页,定制式的组合查询,动态排序等;这几功能点乍一听觉得应该不难,可一做起来,也并非易事,我现在没有基于JSF的UI实现,而是通过JSP TAG +XML+XSLT+AJAX的方式来实现的,其中最复杂的就是组件的参数绑定和状态绑定的问题,服务端是无状态模型,所有状态及参数都保存在客户端,解决如何能让自己的组件里的状态参数不与其它组件或页面上的其它参数发生冲突是个非常重要一环,另外就是SQL的解析,结果模型的抽象,转换器的抽象,对UI前端的命令解析及执行,参数模型的封装,对不同的数据来源用不周的解析器等等,都是要考虑的问题,这一块要说起来就太多了,等先把这个组件完全测通了后,再拿现来专门讨论讨论。
感想,开发一个好的框架是一个非常考水平的事情,他不是我们平时所想像中的那样简单地将一些现成的开源框架拼凑起来就了事的,他涉及到了项目群的协模式,系统架构,各层所选用的技术框架特性,业务集成等方方面面,即使使用Spring这种几乎现成的框架来做为系统的主干骨架,做为框架设计者,你要做的事还很多,你要从系统总体角度去考虑系统的逻辑模式,与外部系统的协作模式,系统的可扩展性和低侵入性;你要让开发人员尽可能的少做重复劳动;你还要保证你所选的技术方案能在开发过程中无障碍;你要做好解决开发过程中的所有技术难题的准备;除了这些,更关键的是你还要能做好业务模型的抽象和设计,你要能及时或预先发现潜在风险和问题并解决它。。。。等等,太多太多。。。,而我,现在要行的路还长得很.....
posted on 2006-03-27 19:02
狂人思维·成都 阅读(1337)
评论(5) 编辑 收藏 所属分类:
JAVA技术 、
J2EE应用 、
工作间