J2EE探索: 有状态网络的J2EE技术 - 编程入门网
在服务器崩溃后仍然有效吗?
该组件需要哪种事务上下文呢? 有状态数据有多重要? 尽管上述一些问题似乎明显地倾向于其中一种技术,但是许多有状态方案实际上既需要使 用 servlet 又需要使用 EJB 组件。至关重要的决定就是确定是在 Web 层还是在业务层上管 理状态,或者同时在两个层上管理状态。在下一节中,我们将研究一些可能的企业应用程序 方案,及其最适宜的解决方案。 应用程序客户机 标准的应用程序客户机是与另一个系统或组件相互操作的客户机。我们将研究三种典型的 应用程序客户机方案,并且讨论每个客户机最适合的有状态解决方案: 如果客户机是基于 Java 的,并且与服务器处于相同的防火墙之后,那么您首先应该决定 有状态交互模型是否是必需的。管理有状态会话 bean 是资源密集型的,因此您应该考虑更 轻量级的备用方案。最佳解决方案就是使用 RMI 直接与应用程序服务器中的 无状态会话 bean 对话。如果 有状态解决方案是必需的,则请考虑使用带有简单事务层的无状态会话 bean,或者在业务层上创建瘦 servlet 层。任何一种解决方案花费部分成本即可提供有状态 体验。最后,如果您的客户机必须与跨多个请求的业务过程的状态进行紧耦合,并且不能接 受添加 Web 层,那么有状态会话 bean 是显而易见的选择。 如果您正在使用非 Java 的客户机或者使用与服务器不在同一个防火墙之后的客户机,那 么状态管理问题略有不同。在这种方案中,您首先应该确定状态管理的目标。如果目标是通 过某种 GUI 为用户提供流畅的体验,那么您可以在 Web 层上管理状态。如果目标是将跨多 个请求的复杂业务过程联系在一起,那么状态管理应该在业务层上进行。再次强调,您应当 始终探索其它选项,如使用带有事务层的无状态会话 bean。 一些应用程序服务器供应商以一种诸如接受本机 IIOP 调用的方式公开 EJB 容器,从而 允许 CORBA 客户机将 EJB 组件当成本机 CORBA 应用程序。这允许非 Java 客户机使用 IIOP 协议与无状态会话 bean 进行通信。在该设置中,客户机绕过了 Web 层,并使用 IIOP 协议直接与业务层(会话 bean)进行通信。这时,体系结构分析与位于防火墙后的基于 Java 的应用程序分析是相同的。请参考第一种方案,以理解业务层上的状态管理问题。 电子商务随需应变环境 正如我们 上个月讨论的,无状态会话 bean 是为电子商务随需应变(e-business on demand)应用程序精心设计的。它们是非常轻量级的,可以轻松地汇聚为池,以确保卓越的 可伸缩性。相反,有状态会话 bean 并不是为这类应用程序而精心设计的。电子商务随需应 变应用程序中通常需要状态管理,但是最好由专用的机制或通过 J2EE 事务进行处理。另一 种可能性是调用 EJB 组件,就好象它是 CORBA 组件一样。当一个或多个被集成的应用程序 是 CORBA 组件时,该选项特别有用。 “富”GUI 客户机 有三种基本的“富”GUI(不是 HTML,也不是命令行)客户机类型:Java applet、独立 应用程序和 Java Web Start。下列解决方案适用于这三种“富”GUI 组件类型中的任何一种 : 如果您的客户机和服务器被防火墙分隔,您应该让客户机通过 HTTP 与 servlet 直接通 信。该 servlet 层可以使用助手类应付简单的业务处理。如果您的应用程序有更复杂的需求 ,或者对企业资源有更高的请求频率,您应该使用会话 bean 来处理业务过程。这里再强调 一次,您应当将有状态交互模型的必要性作为决策过程的一部分进行考虑。 如果您的客户机和服务器位于同一个防火墙之后,直接的 RMI 调用可能是您的最佳选择 。在这种情形下,servlet 只会带来额外的开销和不必要的体系结构复杂性。在 applet 或 Java Web Start 情形中,通过提供带有 applet 或 Java Web Star |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |