从技术选择上,第三方物流仓储管理系统基于B/S模式,基于Java的程序开发,系统体系框架采用Struts+EJB3.0技术框架,数据库选用MysqlServer5数据库,采用集中式数据库管理,EJB容器采用JBoss4.2服务器,作图工具采用PowerDesigner12.5.Struts是基于MVC设计模式的非常优秀的应用框架,对MVC层的模型(Model),视图(View)和控制器(Controller)都提供了对应的实现组件,它把用户界面和事务逻辑分离开,使得Web层易于管理和扩展,并且对其他技术和框架都有很好的融合性组件,以Struts为基础,可以使开发人员集中精力关注于构建业务层的应用程序,而不必关注体系结构上的问题。
而EJB(EnterpriseJavaBeans)是J2EE平台的中心,它用于开发和部署商业应用程序的分布式组件模型,EJB作为一种实现业务逻辑的组件技术,具有可扩展性,事务处理和安全保密性。而项目采用的EJB3.0使用元注释(Annotation)替换原有的XML的部署描述文件以及采用依赖注入等优势,降低了程序的复杂性和组件之间的耦合性,大大提高了系统的开发效率。
而将系统的业务核心集中在EJB层完成,在Web层实现MVC模式和EJB方法调用,实现了EJB层和Web层的解耦,使得编程难度降低,且形成模板化,从而使得本系统具有易于维护和扩展,低成本,高效率等特点。开发需求多变的企业级应用应用系统,应用EJB技术将大大简化系统的开发和维护成本。EJB3.0系统结构:2Struts+EJB框架的设计及其工作原理采用了Struts+EJB框架后,J2EE平台的表示逻辑层被进一步分为3个部分:控制器,视图和模型。实现Struts与EJB3.0的整合,就是要让EJB来扩展完成Struts中MVC的模型Mdoel层,让EJB来封装业务逻辑,充当框架的业务逻辑层。在这种模式中,通过实体EntytiBean封装数据,用SessoinBean封装业务处理,调用EntiytBean,并在Action对象中访问SessionBean,在Struts表示逻辑与业务逻辑分离的基础上,再将业务逻辑与数据逻辑进行分离,在很大程度上保证了系统清晰的层次结构及良好的性能,实现了Struts与EJB的有机结合。
Struts+EJB框架的处理流程清楚地体现了MVC模式的特点。Controller(控制器)从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端;Model(模型)层实现业务逻辑;View(视图)层是应用程序中用户界面相关的部分,向用户显示数据,并能接收用户的输入数据。
由于本系统涉及到分布式的应用,所以本系统的效率就显的非常重要,但制约系统的关键问题是EJB的效率,EJB效率低的一大原因就是通过RMI(RemoteMethodInvocation)调用,RMI是一种通过TCP/IP的java的远程方法调用技术,比本地函数调用的开销要慢好多。当然,entitybean效率低的还有更主要的原因,就是由于entitybean的结构造成的。由于使用entitybean每查找一行数据要进行两次数据库操作,一次是找出主键,另一次是通过主键找出数据,因此使数据库访问的效率大打折扣。
所以对EJB的性能进行有效的优化成为该系统下一步的重点,如用EJB设计模式优化EJB性能,提高查找JNDI及远程调用的效率等等。
2.系统的设计与实现
2.1数据库设计
本系统主要包括八个实体,分别是:入库实体,出185第8期刘树军等:基于Struts+EJB30的第三方物流仓储系统的实现库实体,盘点实体,订货实体,补货实体,转仓实体,配送实体和车辆实体。各实体之间的关系如图3所示。
根据JPA持久化规范,建立EJB组件实现数据库访问逻辑和业务逻辑,编写EntityBean以处理对系统数据库的数据访问,EntityBean是对数据库对象的包装,持久化,每个EntityBean对应系统数据库中的一个表。为了防止数据库设计的过程中与面向对象设计思想产生冲突,而且根据EJB3.0依赖注入的优势,摒弃了传统的数据库建模的思想,而采用领域建模的思想,使数据库结构由EntityBean自动生成,更有利于面向对象编程,使系统开发效率大大提高。
系统各实体之间的映射关系都可以由EJB3.0的注解[12](Annotation)功能完成,例如入库实体和商品实体是一对多关系,则在入库实体中加入@One186计算机技术与发展第20卷ToMany注解便可以表示入库单和商品的一对多关系,而以往还需要新建相应的。hbm.xml文件的XML配置描述文件,既繁琐又容易出错,开发效率低下。
2.2部分主要功能
第三方物流仓储管理是物流管理中*重要的业务。该系统仓储管理模块包括入库,在库管理,出库,综合查询和分析与决策等信息。其中入库管理包括退货入库,转仓入库,采购入库及补货入库等的入库管理和订货管理;出库管理包括销售出库及转仓出库;在库管理包括放置,收货,拣货,发货,定时盘点,统计,转仓管理,质检管理等仓库作业环节。综合查询模块是对包括入库订单,盘点订单,出库订单,转仓订单,补货货单等所有订单的综合查询;分析与决策模块是分析*短距离,*小成本进而做出的决策处理。对入库中,出库,卸货验收,贷物残损处理等业务都提供了网上的审批流程,并详细记录了业务单据及审批意见以供查询。同时根据不同条件设置的报警为管理计划人员即时提供信息。
2.3仓储管理信息系统的实施
项目采用三层开发模型,将程序分为表示控制层,业务逻辑层和数据模型层。调用EJB服务器端增加方法returnmapping.findForward(add);//在Struts-config.xml中查找add转向JSP页面以上只是简单举例简单说明了采用Struts+EJB3.0实现出库管理的流程,可以看出结合Struts与EJB3.0能充分发挥Struts清晰的业务逻辑与表示逻辑分离的特点,以及EJB基于组件分布式计算结构的优势,使得结构更清晰,程序更易于理解,维护更为方便。
3.结束语
在J2EE应用中,采用领域建模的思想,通过JPA把实体自动持久化到关系数据库中,实体中的属性与数据库中表的字段是一一对应,实体与数据库表之间以及实体与实体之间的映射关系都是通过注解(Annotation)来实现的。系统整合运用了Struts+EJB3.0的多层开发框架技术以解决传统B/S模式开发中存在的问题,在Web客户端采用Struts框架,在服务器端采用EJB组件技术,具有易开发性,易维护性,安全性,系统扩展灵活等特点。但本系统还有很多不足之处,例如EJB的效率问题。下一步工作的重点是对EJB进行有效的优化,使其适合于大型B/S系统的开发框架。