`

二、J2EE篇

阅读更多


  前面介绍的改善性能技巧适合于大多数Java应用,接下来要讨论的问题适合于使用JSP、EJB或JDBC的应用。

  2.1 使用缓冲标记

  一些应用服务器加入了面向JSP的缓冲标记功能。例如,BEA的WebLogic Server从6.0版本开始支持这个功能,Open Symphony工程也同样支持这个功能。JSP缓冲标记既能够缓冲页面片断,也能够缓冲整个页面。当JSP页面执行时,如果目标片断已经在缓冲之中,则生成该片断的代码就不用再执行。页面级缓冲捕获对指定URL的请求,并缓冲整个结果页面。对于购物篮、目录以及门户网站的主页来说,这个功能极其有用。对于这类应用,页面级缓冲能够保存页面执行的结果,供后继请求使用。

  对于代码逻辑复杂的页面,利用缓冲标记提高性能的效果比较明显;反之,效果可能略逊一筹。

  请参见《用缓冲技术提高JSP应用的性能和稳定性》。

  2.2 始终通过会话Bean访问实体Bean

  直接访问实体Bean不利于性能。当客户程序远程访问实体Bean时,每一个get方法都是一个远程调用。访问实体Bean的会话Bean是本地的,能够把所有数据组织成一个结构,然后返回它的值。

  用会话Bean封装对实体Bean的访问能够改进事务管理,因为会话Bean只有在到达事务边界时才会提交。每一个对get方法的直接调用产生一个事务,容器将在每一个实体Bean的事务之后执行一个“装入-读取”操作。

  一些时候,使用实体Bean会导致程序性能不佳。如果实体Bean的唯一用途就是提取和更新数据,改成在会话Bean之内利用JDBC访问数据库可以得到更好的性能。

  2.3 选择合适的引用机制

  在典型的JSP应用系统中,页头、页脚部分往往被抽取出来,然后根据需要引入页头、页脚。当前,在JSP页面中引入外部资源的方法主要有两种:include指令,以及include动作。

  include指令:例如<%@ include file="copyright.html" %>。该指令在编译时引入指定的资源。在编译之前,带有include指令的页面和指定的资源被合并成一个文件。被引用的外部资源在编译时就确定,比运行时才确定资源更高效。
include动作:例如<jsp:include page="copyright.jsp" />。该动作引入指定页面执行后生成的结果。由于它在运行时完成,因此对输出结果的控制更加灵活。但时,只有当被引用的内容频繁地改变时,或者在对主页面的请求没有出现之前,被引用的页面无法确定时,使用include动作才合算。

  2.4 在部署描述器中设置只读属性

  实体Bean的部署描述器允许把所有get方法设置成“只读”。当某个事务单元的工作只包含执行读取操作的方法时,设置只读属性有利于提高性能,因为容器不必再执行存储操作。

  2.5 缓冲对EJB Home的访问

  EJB Home接口通过JNDI名称查找获得。这个操作需要相当可观的开销。JNDI查找最好放入Servlet的init()方法里面。如果应用中多处频繁地出现EJB访问,最好创建一个EJBHomeCache类。EJBHomeCache类一般应该作为singleton实现。

  2.6 为EJB实现本地接口

  本地接口是EJB 2.0规范新增的内容,它使得Bean能够避免远程调用的开销。请考虑下面的代码。

PayBeanHome home = (PayBeanHome)
javax.rmi.PortableRemoteObject.narrow
(ctx.lookup ("PayBeanHome"), PayBeanHome.class);
PayBean bean = (PayBean)
javax.rmi.PortableRemoteObject.narrow
(home.create(), PayBean.class);
  第一个语句表示我们要寻找Bean的Home接口。这个查找通过JNDI进行,它是一个RMI调用。然后,我们定位远程对象,返回代理引用,这也是一个 RMI调用。第二个语句示范了如何创建一个实例,涉及了创建IIOP请求并在网络上传输请求的stub程序,它也是一个RMI调用。

  要实现本地接口,我们必须作如下修改:

  方法不能再抛出java.rmi.RemoteException异常,包括从RemoteException派生的异常,比如 TransactionRequiredException、TransactionRolledBackException和 NoSuchObjectException。EJB提供了等价的本地异常,如TransactionRequiredLocalException、 TransactionRolledBackLocalException和NoSuchObjectLocalException。

  所有数据和返回值都通过引用的方式传递,而不是传递值。
  本地接口必须在EJB部署的机器上使用。简而言之,客户程序和提供服务的组件必须在同一个JVM上运行。
  如果Bean实现了本地接口,则其引用不可串行化。
  请参见《用本地引用提高EJB访问效率》。
分享到:
评论

相关推荐

    J2EE应用部署(二):实践篇

    提纲:  一、配置J2EE包  1.1 企业应用的开发过程  1.2 J2EE应用包的结构  1.3 EAR部署描述器  二、一个简单的实例  2.1 组件  2.2 装配应用  2.3 部署和运行应用  三...

    J2EE技术文档资料

    这篇文档主要涵盖J2EE的核心概念、架构、组件以及开发流程。 **一、J2EE核心概念** 1. **分层架构**:J2EE应用通常采用三层架构,包括表现层(客户端)、业务逻辑层(EJB或Servlet)和数据访问层(JDBC与数据库)...

    J2EE应用部署(一):基础篇

    提纲:  一、基础知识  1.1 J2EE应用的构成  1.2 封装和部署操作的任务  1.3 不能封装到EAR文件的组件  二、类装载模式  2.1 在EJB 2.0之前  2.2 在EJB 2.0之后

    J2EE从零开始

    ### J2EE从零开始——全面解析与...通过本篇文章,我们系统地介绍了从J2SE到J2EE的学习路径,以及在学习过程中需要注意的关键技术和实践项目。希望每位Java开发者都能在这个过程中不断进步,最终成为真正的技术专家。

    j2ee环境搭建全套

    本篇文章将详细介绍如何从零开始搭建一个完整的j2ee(Java 2 Platform, Enterprise Edition)开发环境。我们将通过一系列步骤来安装并配置必要的组件,包括JDK、Tomcat服务器、MySQL数据库以及相关的开发工具。 ###...

    J2EE WEB缓存技术详解.doc

    标题和描述中的“J2EE WEB缓存技术详解”指向了一篇关于在Java Web应用程序中使用缓存技术的深入分析文章。文章由作者夏俊于2011年撰写,主要探讨了在处理大量数据时,如何通过实施缓存策略来优化系统性能,特别是...

    xFrame二次开发j2ee_web基础框架

    本篇文章将深入探讨xFrame的核心特性,环境搭建,以及如何进行二次开发。 一、xFrame框架简介 xFrame是一款高度可定制的Web应用框架,它充分利用了Java企业版(j2ee)的技术优势,如Servlet、JSP、JavaBean等,为...

    j2ee解决方案各种框架解决方案

    本篇将深入探讨J2EE解决方案中涉及的各种框架及其应用。 一、Servlet与JSP Servlet是Java中的服务器端组件,用于处理HTTP请求并生成响应。JSP(JavaServer Pages)是Servlet的一种简化形式,允许开发者在HTML页面中...

    当前流行的J2EE WEB应用架构分析

    本篇文章将深入探讨当前流行的J2EE Web应用架构,分析其关键技术组成及其在项目中的应用。 #### 二、J2EE Web应用架构概述 ##### 2.1 架构组成 J2EE架构主要包括以下几个核心组成部分: - **JavaServer Pages (JSP...

    J2EE中文问题终极解决之道

    本篇文章旨在提供一种全面、深入的解决方案,帮助开发者彻底解决这一问题。 #### 一、理解编码机制 在探讨解决方案之前,我们需要先了解一些基本概念,比如字符集和编码方式。 1. **字符集(Character Set)**:...

    J2EE课件及源代码 大连理工大学软件学院

    一、基础篇 1. **JavaEE概述及开发环境介绍**:这部分内容通常会涵盖JavaEE平台的核心组件、架构以及如何搭建开发环境,包括安装JDK、配置环境变量、设置IDE(如Eclipse或IntelliJ IDEA)等步骤,是初学者入门的...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path、Classpath和JAVA_HOME 3.2 验证JDK是否安装成功 3.3 建立J2EE的开发环境 3.3.1 ...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path、Classpath和JAVA_HOME 3.2 验证JDK是否安装成功 3.3 建立J2EE的开发环境 3.3.1 ...

    j2EE常用jar包讲解

    本篇将详细讲解四个重要的J2EE相关库:Dom4j、Hibernate、Spring以及Struts,并通过它们的常用jar包来阐述各自的核心功能和使用方法。 1. **Dom4j**: Dom4j是一个开源的Java XML API,它提供了全面而强大的XML...

    基于Hibernate和Struts的J2EE应用开发 PDF

    为了解决这些问题,提高开发效率并减少代码间的耦合度,本篇文章提出了一种新的开发策略:基于Struts框架和Hibernate框架的J2EE应用开发方法。 #### 二、数据持久层及Hibernate框架 **Hibernate**是一个开源的数据...

    JAVA WEB从入门到精通 随书源码 J2EE

    第二篇、第三篇和第四篇分别采用了相似的行文结构,条理清楚地讲解了Struts、Hibernate和Spring三种框架所包含的组件。第五篇则通过Struts+Spring+Hibernate解决方案实现一个完整的应用实例。 全书配合大量的图例及...

    用Rational Rose和UML开发J2EE应用

    本篇文章将详细介绍如何利用Rational Rose和UML来构建基于J2EE的企业应用,以此提升开发效率并确保项目质量。 #### 二、UML简介及其重要性 **1. 定义与背景** - **Unified Modeling Language (UML)**:统一建模...

    一些j2ee学习资料

    ### 二、J2EE关键技术 1. **Servlets**:用于处理客户端请求并返回响应。 2. **JavaServer Pages (JSP)**:用于生成动态HTML页面。 3. **Enterprise JavaBeans (EJB)**:用于封装业务逻辑。 4. **Java Messaging ...

    J2EE框架学习笔记.

    这篇学习笔记将深入探讨J2EE的核心概念、主要组件以及它们在实际项目中的应用。 一、J2EE核心概念 1. 分层架构:J2EE采用典型的三层架构模型,包括表示层(用户界面)、业务逻辑层(处理业务规则)和数据访问层...

Global site tag (gtag.js) - Google Analytics