一个j2ee项目的性能会受多方面的影响,比较常见的一个是web前台的大量访问,web前台的程序要能够处理高并 发量的请求,但要达到这种要求了一般从编码角度来考虑起的作用不太大,我们通常的一个web项目使用MVC模式的一些开源架构作为基础,使前台的程序结构 比较明了,在有些地方使用LazyLoading的设计模式,一般也就仅此而已,跟多的改善性能的措施一是垂直方式(如增加机器的硬件,设定一些JVM和 服务器的优化配置),二是水平方式(采用群集的方式,在多台机器上部署web前台的程序,利用负载均衡的策略将用户的请求发送到不同的服务器上),通过上 述方式来改善web前台的性能(实际上是用户体验)。
我们在这所说的web前台指的是一些页 面相应的程序和一些简单的逻辑处理,不包含真正进行业务逻辑处理的功能,当然你可以将所有的一切放在一个项目中,部署到一台服务器上,完全没有问题(除了 有些功能的完成不是你所写的而是你调用别的程序来得到结果) ,但在一个大型的j2ee项目中通常是不会由一个程序项目完成的,在这样的项目中,前台的程 序相应用户的请求后,将一些信息封装好后去调用中间件程序或后台程序,那这些中间件和后台一般会单独作为一个项目部署在其他的机器上,之所以要把它们分开 部署,就是可能一个VM的处理效能不够,而采用分布式处理的方式,采用分布式处理可以提升效率,但也带来了一些问题,如安全性问题,分布式事务处理的问题 等等,好在这些问题一般我们在写程序是不用考虑太多,相应的分布式处理框架一般都提供解决的方法,但仍有一些是我们可以通过程序来改善的,比如在安全性问 题上,我们在传输信息是可以加上自己的密匙(比如一些md5或是base64的字符串,传输的信息也可以先转换成md5或是base64再传输,当然这些 对应的是些字符串的信息)。虽然通过分布式处理方式可以提高单个VM的效率,但它要通过网络来相互调用,而这种远程的调用要比VM内部的方法调用要慢很多 (好几个数量级),所有我们尽量减少网络调用的次数,比如运用VO模式,将所有的状态数据包装成一个可序列化的对象来传输或读取,从而减少远程调用的次 数。另一方面在分布式处理的方式中如xmlrpc,web services中我们可以多考虑用异步调用的方式来取代同步调用的方式,这也可以改善调用方的性能(多是web前台),但有些情况是不能用异步方式调用 的,比如调用方等着返回的结果来进行下步的实时操作,但有些比如调用方调用发送邮件的中间件就可以用异步的方法了。
在 中间件或后台程序中不可避免的要同数据库打交道,持久层的设计也是影响一个j2ee项目的重要原因,这中间有两方面,一个是同数据库的连接是个开销比较大 的地方,在这里我们大多用数据源来连接程序和数据库;还有一个就是操作数据库的代码,这个方面的东西要说的很多,现在一般是用ORM来做数据持久方面的工 作,我们将在以后单独讲讲。除了持久层方面,中间件部分还有很多别的地方要注意的。一个就是我们在中间件上调用业务逻辑处理这部分,一个用户调用一个针对 他的业务逻辑处理对象,如果用普通的类来做,中间件的负荷也就比较大了,在这里我们可以用Session facade模式,即用Session bean来封装业务逻辑部分,用户的请求到达中间件后有一个相对应的session bean来处理(多为简单的无状态的session bean) ,之所以这么做是利用了ejb容器对session bean的优化,另一方面在session bean中跨数据库的事务也很好维持(也是由ejb容器来负责)。对应于session facade,还有message facade,它是利用消息驱动bean和jms来处理一些消息和队列方面的问题,它也可以是异步的方式(这方面我还没玩过,等有些经验后再总结出来)。 除了采用session bean来处理用户的逻辑请求,在中间件中我们还可以采用Service Locator模式来提高中间件的性能,说白了,该模式就是采用缓存机制来响应前台的调用,多在实际中使用一个static 的hashmap来做为缓存,存储一些如EJBHOME,JMS连接工厂,数据源等,从而减少大量的jndi查找和远程调用的次数。
以上就是我用过的一些改善j2ee程序性能的方法,简单好用
分享到:
相关推荐
虽然J2EE架构师和开发者可能不是数据库性能优化的专家,但通过一些基本的SQL优化技巧仍能显著改善应用性能。 1. **合理使用索引**:确保SQL查询利用到了有效的索引,减少不必要的全表扫描。 2. **平衡索引数量**:...
缓存(Cache)作为一种提升系统响应速度及改善整体性能的关键技术,在Web应用领域尤为重要。通过缓存页面输出结果,可以显著减少对数据库的频繁访问,进而降低服务器负载,提升用户体验。 #### 缓存技术的重要性 ...
在操作系统层面,可以通过调整一些关键参数来改善J2EE应用程序的性能。这些参数包括但不限于: - **TCP参数**:例如`tcp_time_wait_interval`和`tcp_keepalive_interval`等,用于控制网络通信的效率。 - **NDD设置*...
- **J2EE设计模式**:专注于J2EE环境下的设计模式,帮助开发者构建更加灵活、可扩展的企业级应用程序。 - **重点内容**:MVC模式、拦截器模式、工厂模式等在J2EE项目中的具体应用。 - **EJB设计模式**:针对EJB开发...
《J2EE企业及测试案例(设计框架应用开发)》是一个综合性的学习资源,主要针对J2EE平台上的企业级应用程序开发和测试。这个资源详细介绍了J2EE的基础知识,适合初学者入门学习。以下是一些核心知识点的概述: 1. *...
本文探讨了在传统浏览器/服务器(B/S)架构下,由于浏览器的限制导致网络应用程序交互性能受限的问题,并提出了一种新的解决方案——利用AJAX技术与J2EE平台相结合来提高Web应用的性能和用户体验。 #### 引言分析 ...
6. **更好的集成能力**:通过引入新的 API 和标准,J2EE 1.4 改善了与其他系统的集成能力,尤其是在 Web 服务领域。 #### 四、总结 J2EE 1.4 作为 Sun Microsystems 发布的一个重要版本,不仅在技术组件方面进行了...
本文介绍了基于J2EE的分布式应用程序如何通过自动动态部署机制来提高性能和可靠性。通过垂直分割、组件复制和一致性维护等策略,可以在广域网络中有效地部署和管理复杂的企业级应用程序。此外,动态部署额外副本的...
- **Spring框架**:虽然不是J2EE的一部分,但Spring与J2EE紧密配合,提供依赖注入、AOP(面向切面编程)等功能,改善J2EE开发的效率和灵活性。 - **设计模式**:如MVC、DAO、工厂模式、策略模式等,是解决常见软件...
在Java企业级开发中,J2EE(Java 2 Platform, Enterprise Edition)是核心平台,它提供了丰富的组件和服务来构建分布式、多层的企业级应用程序。其中,三大主流框架——Spring、Hibernate和Struts,成为了开发者们...
综上所述,通过深入研究Ajax技术和J2EE 5新规范(尤其是EJB 3.0)等技术,可以有效改善电信WebGIS系统的性能,提高用户的满意度。这些技术的应用不仅可以提高系统的响应速度和可扩展性,还能降低开发和维护的成本,...
- **J2EE Management 1.0**:提供了一组用于管理和监控J2EE应用程序的标准接口。 - **JMX 1.2 (Java Management Extensions)**:增强了对Java应用程序的管理能力,包括监控、配置和故障排除等功能。 - **J2EE ...
本文档探讨了在J2EE平台上,如何利用JSF(JavaServer Faces)技术实现数据表控件的分页功能,以应对大数据量访问及高并发访问场景下的性能优化需求。J2EE是一个由Sun Microsystems开发的企业级Java应用开发平台,它...
J2EE的发展是为了应对传统应用程序模型的局限性,尤其是为了改善代码复用性、维护性和分布式系统的可伸缩性。 在传统应用程序模型中,用户界面、应用逻辑和数据访问通常紧密集成在一起,这导致了代码的不可维护性、...
- **缓存(Caching)**:改善性能的关键技术之一。 - **日志(Logging)**:用于记录应用程序运行状态的信息。 - **性能优化**:包括代码优化、数据库优化等方面。 #### 七、总结 《J2EE权威指南》不仅详细介绍了J2EE...
而J2EE引入了构件(component)和中间层开发的概念,实现了计算模式从本地计算到网络计算的转变,以及开发模式从非构件基础到基于构件基础的转变,从而改善了这些问题。 J2EE架构支持N层结构,允许应用程序组件分布...