利用EJB技术构建分布式企业物流系统

2009-03-23 02:40韩亦笳
计算机时代 2009年1期
关键词:物流系统分布式组件

韩亦笳 赵 斌

摘要:EJB技术是J2EE平台的核心技术,继承了Java语言的平台无关性的特点,简化了用Java开发分布式组件应用程序的过程。分布式系统体系结构具有安全性、稳定性、易维护、快速响应和扩展灵活等特点,用来构建具有分布式需求的企业物流系统非常合适。文章介绍了EJB技术如何实现分布式计算功能,描述了分布式企业物流系统的设计方案,提出了改进系统性能的几种方法,最后讨论了EJB安全性的相关内容。

关键词:EJB;分布式;组件:物流系统

0引言

如今,一体化物流是最具影响力的物流发展趋势之一。电子商务的快速发展使得构建一体化物流系统成为可能。同时,EBXML、UDDI、XML/EDI等电子商务技术的迅速发展,使得企业之间的信息交互和业务互操作有了标准的规范和方法,为一体化物流系统的建设奠定了基础。

SUN公司推出的J2EE企业平台为现代企业应用提供了分布式系统体系结构的解决方案。J2EE不仅继承了Java语言的平台无关性的特点,而且还结合了组件技术,为现代企业快速创建分布式应用提供了一体化的解决方案。EJB即Enterprise JavaBeans,是一种服务器端组件体系结构,它简化了用Java开发企业级的分布式组件应用程序的过程;通过EJB可以开发可扩展的、健壮的和安全的应用程序,而不用编写复杂的分布式组件框架;利用EJB可以快速而且轻松地利用Java构建服务器端组件;EJB被设计为支持应用程序的可移植性和可重用性。这些特性使得EJB可以适用于为任何厂商的企业中间件服务。

本文介绍了基于EJB技术的分布式企业物流系统的设计方案,对物流系统运行初期所遇到的部分性能瓶颈给出了解决办法,并且分析了EJB的安全性。

1EJB技术实现分布式计算

EJB的核心是RMI,即Remote Method Invocation。在EJB中,对客户端来说企业Bean必须可见,客户端才能调用。而这正是通过Java RMI来实现的。企业Bean并不是完整的远程对象,它们没有继承UnicastRemoteObject,而是包装在RMI功能的外壳内,叫做EJB对象。EJB对象正是客户端访问的远程对象。当一个客户端调用EJB对象时,EJB对象将远程调用请求委派给企业Bean执行。

如果开发企业Bean,就需要Bean的EJB对象的接口,称为远程接口。远程接口复制了企业Bean的所有的方法,调用EJB对象就好象在调用企业Bean本身一样。

EJB的远程接口也有自己的一些特性:EJB远程接口间接地继承了java.rmi.Remote接口;EJB远程接口中的每个方法都需要抛出java.rmi.RemoteException异常;每个远程接口中的方法都必须接收符合Java RMI标准类型的参数。参数可以是原始类型、可序列化或是远程对象;可以在语法上控制它是值调用还是引用调用。

客户端使用的EJB对象可以是真正的EJB对象,也可以是在网络上某个地方的EJB对象的远程存根(RemoteStub);客户端代码不关心这些,因为它只是调用EJB对象接口,而不管它是对象本身还是存根的具体实现。因此EJB的本地,远程位置透明性通过RMI就达到了。

在EJB中,Home对象是产生EJB对象的工厂。通过Java命名目录服务接口(JNDI)来查找Home对象,一旦找到了Home对象,就可以通过RMI来调用它。

Home对象的接口(也就是Home接口)也是个Java远程接口,符合Java RMI规范。它必须抛出远程异常,实现Java.rmi.Remote并介绍系列化参数。作为EJB对象,它们是各个容器私有的。

本地对象的客户端只和本地接口交互,就好像远程对象的客户端只处理远程接口一样。和EJB对象一样,对本地对象的引用可以是一个实际的本地对象,也可以是位于网络某个地方的本地对象的远程存根。

EJB的调用过程如图1所示。

2系统设计方案

E3B是J2EE平台的核心,也是J2EE得到业界广泛关注和支持的主要原因。J2EE的一个主要目的就是简化企业应用系统的开发,使开发人员将主要精力放在商业逻辑的开发上。EJB正是基于这种思想的服务器端技术,它本身也是一种规范,该规范定义了一个可重用的组件框架来实现分布式的、面向对象的商业逻辑。EJB的核心思想是将商业逻辑与底层的系统逻辑分开,使开发人员只需关心商业逻辑,而由EJB容器实现目录服务、事务处理、持久性、安全性等底层系统逻辑。

本文所述的分布式企业物流系统采用EJB体系结构,由客户层、应用逻辑层、数据层组成的。客户层为用户提供简洁、友好的人机交互界面,主要负责数据的录入和输出数据的表示。当用户进行数据交换时,其应用程序不直接访问第三层的数据库服务器,而是通过第二层——应用逻辑层提供的接口间接访问后台的数据库,这样就保证了后台数据库的安全性,实现真正意义上的“瘦客户”模式。系统体系结构如图2所示。

数据层实际上就是后台的数据库管理系统,应用逻辑层可以通过JDBC与后台数据库进行通信。

应用逻辑层是整个系统的核心,它集中了整个应用的所有规则,负责接收客户层发送过来的请求,对输入的数据按照既定的业务规则进行加工处理,并转换为对数据库的访问。因此,应用逻辑层是客户层访问后台数据库的代理。

分布式物流系统中各类事务(即物流系统的事务模块)的主要逻辑可以被放置在EJB中。以这种方式,我们就可以使代码集中,模块化地解决事务问题,利用企Bean容器来支持低层服务,比如状态管理、事务处理、线程管理、远程数据访问和安全等。

在本文所述的物流系统中,货物跟踪、车船跟踪、运力调度等模块都用EJB实现,他们各自成为独立的组件,企业的各部门、分公司可以根据权限访问这些组件,实时查看货物状态、车船位置及运力的分配情况,从而实现物流系统的分布式和组件式管理。

客户层开发的主要思想是合理划分数据敏感组件和不敏感组件,分别形成静态网页和动态EJB组件,以利于应用程序的管理和维护,这样编程人员可以非常方便地保持客户端和服务器端数据一致。客户端应用程序本身不与后台数据库服务器直接连接,而是通过调用应用逻辑层的组件与后台数据库服务器发生联系,用于客户录入数据和显示从服务器端返回的各种查询结果和各种统计报表。

3系统性能改进

在系统的运行初期,碰到了部分性能瓶颈,主要解决方法如下:

(1)一次性查询大量数据时,系统性能下降,这是由于实体bean反复调用数据库引起的。使用会话Bean来处理数据库的批量操作可以减少数据库调用次数,从而提高性能。

(2)采用集群来提升系统性能。集群中的每台应用服务器都含有相同的EJB,采用有效的算法可实现负载均衡。

(3)调整服务器的线程池大小、JVM堆栈大小、连接数等属性,可达到最优配置。

4EJB的安全性分析

EJB的安全架构主要有两种,分别是声明性安全架构和编程安全架构。

声明性安全架构是指由部署员建立与J2EE应用程序关联的容器强制的访问控制规则的架构。它是部署员使用部署工具将应用程序权限模型映射到特定于操作环境的策略和机制。应用程序权限模型在部署描述符中定义。

编程安全架构是指EJB容器先做出访问控制决定,再将方法调用指派给组件的架构。组件的逻辑或状态不包括这些访问决定。但是一个组件可以使用两种方法执行细化访问控制——EJBContext.isCallerlnRole(供企业Bean代码使用)和HttpServletRequest.isUserlnRole(供Web组件使用)。组件根据调用参数、组件的内部状态或其他因素,使用上述方法确定是否将组件选择的权限授予调用者。

声明性安全架构和编程安全架构在实际应用中可以互为补充。在编写完应用程序之后,声明性安全更加灵活。在编写应用程序中,编程安全可以提供更加灵活的功能。此外,对于部署员而言,声明性安全是透明且完全可理解的;而编程安全却隐含在应用程序中,可能只有应用程序开发人员才能完全理解。在为特定组件和方法选择安全架构过程中,应该考虑两者的区别。

5结束语

分布式系统体系结构具有安全性、稳定性、易维护、快速响应和扩展灵活等特点,用来构建具有分布式需求的企业物流系统非常合适。EJB作为优秀的分布式架构,可以简化开发分布式应用程序的过程,从而开发出可重用的具有高度可移植性的应用程序。

猜你喜欢
物流系统分布式组件
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
长尾理论下的农村电子商务物流经营模式研究
关于物流系统末端配送服务质量提升的讨论
物流系统优化对公司生产效益的影响
基于DDS的分布式三维协同仿真研究
风起新一代光伏组件膜层:SSG纳米自清洁膜层
西门子 分布式I/O Simatic ET 200AL