开发完整J2EE解决方案的八个步骤 6
来源:网络 更新时间:2014-12-11
VII、组合和配置
组件装配和方案配置在J2EE的开发中是特别重要的。开发和安装的环境可能是完全不同的。如果EJB处在系统中,你需要使用厂家的专门工具来提出产生容器的类,上面我也提到过,Web或者应用组件的配置对于不同的厂家都是不一样的。你还必须考虑要配置的系统是否拥有任何厂家指定的代码实现。在一个可扩展的体系中,系统的结构应该是稳定的,但是应该可以支持增加配置新的或者旧的组件,而无需影响整个系统。
VIII、运作和维护
在最后的阶段,应用交付到用户的手中,你必须为他们提供培训、文档和教育。用户将会发现问题和可能会提出新的改进。你必须通过正确地修改管理过程来处理这些需求。你无需为了配置一个新的组件或者替换一个旧的组件而关闭一个正在工作的系统。
体系开发流程
我们必须做许多体系的决定,因此我们必须整理出一个体系开发的流程。对于一个企业来说,通常有许多应用项目,其中的一些甚至会跨越几年,从而导致系统围绕许多周期而变化。在你的领域中,许多同样的项目中都会出现同样的需求。你应该很容易地重新使用一个扩展的和可重用的体系,它们可能在上个项目周期或者其它的项目中。这样会有一个对普遍架构的需求,可重用的软件架构可为家族式的软件应用提供一个普遍的架构。
如果这是你的首个J2EE项目,你的体系必须被原型化,进行测试、分析,然后再重复。BluePrint提供了许多好的设计指导方针和最佳的练习,宠物店的例子也是一个很好的参考体系。要很快地提出一个好的并且是高质量的解决方案的有效方法是使用和扩展BluePrint参考体系,然后插入到你自己的商业组件中。
使用参考体系
就我的理解来说,宠物店体系的本质是Model-View-Controller和Command模型。你可以将这些模型应用到以Web-centric和EJB-centric的系统。对于每个域对象,一个视图是用嵌套的JSP表现。一个controller处理与商业相关的事件,而域对象封装商业逻辑、事务和安全。我们使用前台的Servlet作为中央的controller,以接收和解释所有用户的操作。它分派商业事件到指定的域对象controllers,这些controllers可调用域对象来改变持续的状态。根据这个事件处理的结果,一个controller选择下一个显示的视图。以下的组件对于体系都是很重要的,我们可以修改并且应用在大部分的J2EE应用:
MainServlet:前台的组件是Web容器和该架构之间的接口
ModelUpdateListener:是获取模型更新事件的对象的接口
ModelUpdateNotifier:在更新模型事件发生的时候通知监听者
RequestProcessor:处理由MainServlet接收的全部请求
RequestHandler:plug-n-play请求处理器组件的接口
RequestHandlerMapping:包含有请求处理器映射规则
RequestToEventTranslator:根据请求处理器的映射规则,中央请求处理器委派请求处理到plug-n-play请求处理组件。到商业事件的透明http请求
EStoreEvent:商业事件
ShoppingClientControllerWebImpl:Proxy-to-EJB层前台控制器
ScreenflowManager:控制屏幕流,选择视图
ModelUpdateManager:EJB层模型更新管理器,通报由于一个事件而导致的模型修改
ShoppingClientControllerEJB:EJB层前台,为EJB客户提供远程服务
StateMachine:中央事件处理器,根据状态处理器的映射规则,委派事件处理至plug-n-play处理器组件
StateHandler:EJB层状态处理器接口
StateHandlerMapping:包含状态处理器映射规则
扩展参考体系
BluePrint的例子应用是一个好的起点,你还应该修改它以配合不同的项目和领域。设计模型是可重用的微体系,你可以使用它来扩展参考体系。BluePrint提供了一个非常有用的J2EE模型目录,而23个“GangofFour”模型都是极好的资源。例如,如果你想扩展参考体系以支持工作流管理,你可以在配置或者运行时使用中央controller来动态注册事件处理器。中央controller要求每个注册的事件处理器处理一个事件,直到一个处理器返回一个指示已经到达命令串末尾的信息。