随笔-10  评论-36  文章-6  trackbacks-0
所谓报文驱动,就是模块间的相互调用通过定义了格式的报文传递输入参数,返回值通过应答报文传递的模块调用方式。模块指实现独立业务功能的服务类,而非方法间的调用。例如:转账模块调用记账模块。模块间的报文传递,可以是WebService、RMI等同步方式,也可以是MQ等异步方式。本文不是完整的实现过程,而是纲要,防止自己忘记的备忘录。
本文的软件系统架构参考《基于EJB 3.0的企业应用后端框架》。

1、创建数据库及数据库表。

2、创建实体类及相应的DAO类库,本库是EJB模块,可以动态更换。实体类总是对应数据库表,每个表对应一个或多个实体类。实体类是POJO对象。DAO类使用JPA完成实体对象的增、删、改、查、锁等操作,和具体业务逻辑无关。
(1)创建EJB项目,包含ejbModule、testcase、script等目录。源码放置到ejbModule目录,测试代码放置到testcase,数据库相关脚本放置到Script目录。
(2)给项目添加JPA支持。从ApplicationServer支持的JPA中选择一款JPA实现。实际部署时,JPA模块是可以动态更换的。
(3)编辑项目的持久化配置文件,和数据库配置保持一致。
(4)给测试或JPA添加依赖的外部JAR包。
--------- 准备就绪
(5)从数据库生成实体类并定制,确保每个实体类有唯一的序列化ID。每个实体类有主键,实体类和主键类均是可序列化的。如果实体对象和数据库数据间要进行某种转换动作,由实体类的Get/Set方法完成。
(6)编写一个AbstractEnityDao类实现调用JPA完成实体对象的持久化操作。为每个实体类派生一个DAO类完成该实体的持久化。该DAO是一个SessionBean,且只实现本地方法。如果要对实体的值合法性进行检查,则在DAO类完成。
(7)编写DAO和实体类的测试代码,确认每个DAO类均工作正常。

3、创建实体类及DAO类的client库。本库是普通的JAR包,给未来使用实体对象和DAO对象的对象使用。
(1)DAO类库完成并定版后,创建JAR库。
(2)复制DAO类库的全部实体类到本库,确保包名没有变化。
(3)复制DAO类库的全部DAO接口到本库,确保包名没有变化。
(4)编辑全部实体类,去掉@JPA的注释并纠正import语句,以减少本库的依赖性。

4、创建报文库,本库是普通Jar包。
(1)为每个报文创建一个报文类。报文类是POJO对象,且必须可序列化。
(2)如果使用报文的全部时JAVA代码,则使用默认的Java序列化对象的方法传递报文对象。否则,实现序列化方法,将报文串转换为报文对象和将报文对象转换为报文串。Java内部使用报文对象,模块间调用使用报文串。
(3)如果使用XML作为报文串,则可以为每个报文创建一个类和一个映射文件,通过XML通用类库实现对象和串的转换。

5、编写业务服务库,本库是EJB模块。
(1)创建AbstractBusinessService类,定义业务服务的接口,并实现通用的方法。
(2)为每个报文创建一个业务服务类继承AbstractBusinessService类,并实现对报文的特殊处理。业务服务类是SessionBean,实现本地接口。
(3)为每个业务服务类编写测试代码,确保每个服务类均可以正常工作。

6、编写业务引擎服务(EJB服务)
(1)本服务提供本地和远程方法供Client使用,接收Client传递的业务报文对象,根据配置创建并调用业务服务对报文进行处理。
(2)业务引擎通常提供实时调用和MQ调用两类引擎,后者是消息驱动Bean。

7、Web服务
(1)将业务引擎服务封装为WebService或http/REST风格的服务,供外部系统调用。
------------- 完成全部项目

8、部署:将全部类库打包为EAR发布,将报文库发布给Java外部客户。


 
posted on 2011-10-29 20:22 飞鹰 阅读(465) 评论(0)  编辑  收藏

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


网站导航: