狂人思维·成都
Google
软件架构,开则持续,合则稳健;亦开亦合,刚柔并济;讲究平衡如同生活之中庸和谐.
E-MAIL:guojian。zhang@gmail。com
posts - 19,  comments - 62,  trackbacks - 0

进入项目就一直忙忙碌碌,朦胧中已经有近一年没写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 狂人思维·成都 阅读(1343) 评论(5)  编辑  收藏 所属分类: JAVA技术J2EE应用工作间

FeedBack:
# re: 最近很忙,很郁闷,也很有收获
2006-03-28 12:13 | 2002PP
偶也用过MyFaces, 但发现JSF好像和IE有兼容性的问题。
在IE中在TextBox中按Enter键,表单不会被提交。但IE的页面好像被刷新了,
debug发现根本没有进入Backing Bean中。而在Firefox中就没有问题。
好像很多JSF应用都有这个问题,不知道你有没有碰到。  回复  更多评论
  
# re: 最近很忙,很郁闷,也很有收获
2006-03-28 12:41 | langds
我还在没有遇到过这个问题,我现在是JSF和spring webflow集成在一起的,backing Bean是由Spring 的Bean Factory统一管理,当然这个不是你说的那个问题的原因.
你的这个问题可能是焦点设置的问题吧,实在不行你log4j的debug和trace打看,看看在触发事件的时候,具体触发的侦听器或action是不是与你所配置相对应,如果不是,就看看你的代码 是不是有问题了.如果没找到问题,那就要看看是不是javascrip在处理前端参数时是不是给弄丢了,有一些JSF的组件实现的确和浏览器不兼容的问题,但这种情况应该极少数.
  回复  更多评论
  
# re: 最近很忙,很郁闷,也很有收获
2006-03-28 13:12 | galaxy
自定义Data Table UI组件
这个想法好啊
我们以前有过dbgrid组件tag,不过我感兴趣的是你如何针对不同的需求动态组合
定制式的组合查询以及如何确定你查询的数据源和你动态组合查询的绑定
等待你的消息。。。。。。。  回复  更多评论
  
# re: 最近很忙,很郁闷,也很有收获
2006-03-29 11:54 | 江南白衣
强啊! 你用的东西也太多,太新了吧?实验性项目?  回复  更多评论
  
# re: 最近很忙,很郁闷,也很有收获
2006-03-30 12:52 | langds
呵呵,
to 江南白衣:
这不是一个实验性项目,而是一个银行全行级的CRM项目,从技术选型上来说,webflow以及JSF相对来说的确是时下的新技术,新也就伴着不够成熟,自然也会有风险,尤其是webflow,连正式版都还没有推出我们就准备用上它了,嘿嘿,其实之所以选则webflow是有一定有前提的(受前任软件平台所影响),对于JSF,我们没打算要用他的多复杂的组件,而是一些非常简单的几个常用HTML组件,比如数据列表,枚举等都是我们自己基于标准taglib结合XSLT技术开发的,所以,对于JSF实际上我们只用了他的基本模型管理功能以及EL.相对于webflow来说,我们其实是将其定位到了导航流程这一层,我们之所以这样限制一些功能的使用,在一定程度上来说也是为了尽量降低风险.当然webflow是否一定要启用,目前还是考察阶段.  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿

随笔分类(31)

随笔档案(19)

文章分类(3)

文章档案(3)

我关注的Blogs

搜索

  •  

最新评论

阅读排行榜

评论排行榜