Welcome 微信登录

首页 / 软件开发 / JAVA / 使用EJB组件的判断标准

使用EJB组件的判断标准2011-05-20在现今的技术条件下,何时以及是否使用 EJB 组件是方案小组面临的一个十分烦人的问题。为帮助你做出正确决定,我们准备了一些问题,以供你在考虑从其它技术转移到 EJB 组件,或者考虑一个可能使用 EJB 组件的新方案时作为判断依据。我们还将比较两个使用了 EJB 组件的方案,并将看到它们是如何被正确或错误地应用于实际的。

什么是 EJB 组件?EJB 组件是为企业级应用设计的 java 组件模型。

EJB 组件是基于标准分布式对象技术、CORBA 和 RMI 的服务器端 java 组件。EJB 组件总是分布式的,这是它们与标准 JavaBeans 组件最根本的区别。

EJB 组件提供了应用的商务逻辑部分。由于它们不涉及表示层的问题,因此必须与其它的显示技术(如 servlets),服务于 HTML 客户端的 JSP 技术,或者使用了诸如 AWT、Swing 技术的 java 应用一起使用。

实现了 EJB 规范的应用服务器提供了可以解决安全性、资源共享、持续运行、并行处理、事务完整性等复杂问题的服务,从而简化了商业应用系统。

Sun 公司制定的 EJB 组件模型要求 EJB 组件运行于 EJB 服务器(通常称为应用服务器)的环境下。我们的示例中使用了高级版 WebSphere 应用服务器,但所讨论的功能适用于大多数 EJB 服务器。

需要考虑的技术问题

当你在决定 EJB 组件是否为适合你的实际情况的合适技术时,不妨先考虑几个问题。如果你对所有这些问题的回答都是肯定的话,那么 EJB 组件就是你可以采用的合适技术。反之的话,别的技术可能更适合

你需要将商务逻辑组件与面向外界的 Internet 隔离开吗?

许多公司认为他们的应用软件,特别是构成商务逻辑的一些标准和数据结构,是极为重要的公司财产(例如,公司所拥有的分析应用工具构成了股票交易网站的一部分)。允许外人访问这些属于公司资产的原码和目标码将对公司产生极大的危害。因此,这些公司十分需要将商务逻辑置于一套安全防火墙后面(通常称为无戒备区,也称 DMZ)。这里我们假设表示层逻辑不如后台的商务逻辑重要。如果不是这样,那么这种方案的安全性就要下降,整个系统可能都需要置于 DMZ 之内。如果整个应用必须(或者能够)置于第二层防火墙后面,那么选择其它技术(如通过 Java Servlets 发出 JDBC 请求来直接访问数据库)就显得更合理

你需要不止一种类型的客户端访问共享数据吗?

通常,一个应用会有多种类型、需要访问相同信息的客户端。例如,一个应用可能会有供外部客户访问的基于 web 的 HTML 前端,以及供内部人员使用的更完整的应用前端。通常,这个问题是通过为同一应用编写两个共享相同数据源(数据库表)的版本来解决的。但是,这种方法效率不高,无论是从编程时间还是从同时发生多个数据库锁定时数据库的利用率来说。

EJB 技术的解决方案是将共享数据和商务逻辑集成到一套 EJB 组件中,以供不同类型的客户端(如 servlet/HTML 和 application)访问。EJB 组件控制着对后台数据的访问,并管理着当前事务以及数据库的内部锁定。通过去除应用中的重复代码,减少编写数据库控制逻辑的工作,这种方案降低了总的编程量。

在这个领域还有其它一些解决方案--比如,java 应用可以通过 HTTP 访问 java servlets,同时浏览器也可以通过 HTTP 访问 java servlets。这些解决方案的问题在于:如果 servlet 是用来在浏览器中显示信息的,它就必须包含一些表示层逻辑,这些表示层逻辑对于向另一个程序传递信息来说是多余的。因此,你最终不得不采用两套部分重复的 servlets 来处理两种情况。此外,HTTP 不是程序间通讯的效率最高的协议。你必须设计能通过 HTTP 管道进行程序间信息传递的数据格式--这通常或者是基于文本的格式,比如 XML(由接收端进行解析,由发送端生成),或者是基于对象的格式,比如 java 序列化。两种格式都需要大量的编程工作,它们都不如本地的 IIOP 速度快。

你是否需要对共享数据同时进行读和写操作?

通常,"胖客户端"解决方案要求应用在数据库级别上管理对共享数据的访问。其结果是:处理数据库锁定与同步的方案非常复杂,若不考虑数据库锁定与同步问题又会失去数据的完整性。

EJB 技术能自动处理这些复杂的共享数据同步问题。正如前面提到的那样,EJB 组件控制着对后台数据的访问,并管理着当前事务和数据库的内部锁定。这不仅省去了编写数据库控制逻辑的工作量,同时也保证了数据的一致性与正确性,从而降低了总的编程量。