分享
 
 
 

灵活使用EJB的本地和远程接口(一)

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

本文展示了样本 J2EE 应用程序的设计方法、实现和测试结果,提供了 EnterPRise java Bean 的本地和远程接口使用的基本比较。

引言

随着 EJB 2.0 规范的出现,Enterprise Java Bean 可以有本地接口、远程接口,或同时有两种接口,这给 J2EE 开发人员和架构师提供了非常大的灵活性。实现两种接口给予 Bean 客户端和 Bean 本身在开发场景方面的自由。取决于客户端与 EJB 的相对位置,可以设置访问 Bean 的逻辑的最佳方式。本地接口提供对 EJB 的优化访问(假如客户端和 Bean 位于同一 Java 虚拟机(Java Virtual Machine,JVM)中),而远程接口可以用于分布式体系结构。在单个应用程序中组合这两种类型的接口来支持两种访问 Bean 的方式有助于减少设计约束。

通过使某些事情具体化来权衡设计决策的利弊是非常有意义的,这样的事情可以是测试结果、案例研究,最好是方法和工具而不要仅仅是请求和响应。本文力图提供更多的关于使用 EJB 的本地和远程接口的信息(基于样本 J2EE 应用程序)。通过使用 WebSphere Studio application Developer 的开发和测试环境,我们将实现两种 J2EE 应用程序体系结构的拓扑,运行应用程序,并且借助于简单的 Java HTTP 客户端对应用程序进行测试来获取与性能有关的反应和数据以供考虑。

J2EE 应用程序的体系结构选择

一般来说,最简单的拓扑是 J2EE 应用程序中的每个组成部分都在同一 WebSphere Application Server、同一 JVM、同一节点或机器中。在这样的情况下,WebSphere Application Server 提供 Servlet 容器和 EJB 容器(图 1)。这种遍及全文的拓扑(我们将省略防火墙、负载平衡器和转换器等等)称为“All-in-One”拓扑。

图 1. 简单的 J2EE 应用程序拓扑:All-in-One

这是 WebSphere Studio Application Developer Version 5.1(以下称为 Application Developer)中的 WebSphere Test Environment(WTE)的缺省拓扑。然而,这样的拓扑可以作为站点体系结构的一部分成功地用于生产环境。随着 EJB 2.0 规范的出现,可以使用 J2EE 应用程序的任何 Java 组件中本地接口来与同一 EJB 容器中的 EJB 进行通信。

有时,需要分离 Servlet 和 EJB 容器,比如出于应用程序安全性考虑。应用程序架构师或开发人员可以选择把 Servlet 容器放在不同的节点上,因而使 J2EE 应用程序拓扑更加复杂(如图 2 所示),我们称这种拓扑为“分离容器(Separate Containers)”拓扑。事实上,WebSphere Application Server 可以用作高效 Servlet 容器和 EJB 容器,但是为了使事情更轻易区分,我们在此包含了 Tomcat Application Server 和 Servlet 容器。

图 2. 拓扑:分离容器(Separate Containers)

在分离容器(Separate Containers)拓扑中,J2EE 应用程序的 Web 部件与 EJB 通信的惟一方法是通过远程接口(一般是通过 Internet Inter-Orb Protocol(IIOP))。(在本文中,我们不讨论 Web 或 HTTP 服务器的分离,因为它不是我们关注的要点)。

部署体系结构的决策在 J2EE 应用程序的开发过程中发生改变。因此,开发人员可能想利用 EJB 的远程和本地接口的优势来避免损失灵活性。有可能开发一种 J2EE 应用程序,它将适应任何合理的部署拓扑而不用更改一行源代码,惟一需要进行的更改也许就是部署描述符设置,这可以大大节省开发人员的时间。比较本地接口与远程接口的使用性能也是非常有意义的。稍后,我们将创建一个样本 J2EE 应用程序,它将使我们能够通过设置 EJB 的环境参数来方便地从使用本地接口转换到使用远程接口。对于 All-in-One 拓扑,我们将通过控制方式使用本地或远程接口来测试样本应用程序,并且分别称它们为“All-in-One-All-Local”和“All-in-One-All-Remote”。

构件和先决条件

接下来的部分将描述创建一个可灵活部署、多层、分布式 J2EE 应用程序(名为“Dual”)的开发和部署过程,这个应用程序将演示两种接口的使用。结果包括:

1.三个 J2EE 应用程序(EAR 模块),用于已描述的部署场景。

2.Java 模块,包含一个 Java Bean。

3.两个 J2EE EJB 模块:

·.无状态会话 EJB

·容器治理的实体 EJB(CMP)

4.J2EE Web 应用程序(WAR 模块),包含:

·一个 Servlet

·一个 jsp 页面

·一个 Html 页面

5.数据源(映射到 DB2 数据库)。

6.两个测试服务器,每个实现:

·WebSphere Test Environment(WTE)

·Tomcat Test Environment

这个应用程序采用标准的模型-视图-控制器(Model-View-Controller)体系结构(MVC,“Model 2”),其中,Servlet 用作控制器,而 JSP 用作表示组件。为了使事情更接近于现实生活,还使用了 Data Transfer Object(DTO)或 Value Object(VO)设计模式。Servlet DualServlet 与会话 Bean Dualsession 交互,而会话 Bean DualSession 又与实体 Bean DualEntity 交互。实体 Bean 与数据源(包括表 PERSON 在内)交互。VO 是由可序列化 Java 类 Person 表示的。该对象用作会话 Bean 的方法的返回值以及 JSP 页面的 Java Bean。

下载 Zip 文件包含完整的 EAR 模块和本文所用的代码清单。通过这些现成的解决方案,您可以简单地创建数据库表和服务器项目,然后轻松地运行、调试和测试应用程序。下载的内容还包括一个简单的 Java HTTP 多线程测试客户端来帮助进行性能测试。

在实际场景中,图 1 和 2 展示的每个组件都将驻留在分离的节点(机器)中。出于本文的目的,我们将把每个组件(包括持久性存储在内)放在同一机器中,在单个开发人员的工作台上运行每个组件。由于本配置只是出于教育的目的,它仍将不限定可灵活部署的应用程序的特征。应用程序的每个主要的组件都可以部署到分离的节点中而不用进行代码更改,采取的方式是将相对主机名提供给客户端、Web 和 EJB 组件以及 JDBC 驱动程序。

为了完成本文中的步骤,您必须在工作台上安装如下应用程序:

·DB2 V8.1(数据库)

·WebSphere Studio Application Developer Version 5.1(集成开发和测试环境)

·Tomcat 4.1.29(Servlet 容器);请在此下载。

下面几个部分将描述开发 Dual J2EE 应用程序的主要步骤。为了本练习的成功,必须完全遵循命名约定。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有