最重要的Java EE最佳实践 - 编程入门网
。
最重要的Java EE最佳实践(8)时间:2011-08-26 IBM Keys Botzum等12. 充分利用应用服务器中不需要修改代码的特性。 使用某些特性(如 WebSphere Application Server 缓存和 Prepared Statement 缓存)可以极大地提高性能,并且使得开销最小。 前面的最佳实践 4 清楚地描述了这样一种案例,即关于为什么应该谨慎的使 用可能修改代码的应用服务器特定的特性。它使得难以实现可移植性,并且可能 给版本的迁移带来困难。然而,特别是在 WebSphere Application Server 中, 有一套应用服务器特定的特性,您可以并且应该充分地利用它们,因为它们不会 修改您的代码。您应该按照规范来编写代码,但如果您了解这些特性以及如何正 确地使用它们,那么您就可以利用它们显著地改善性能。 作为这个最佳实践的一个示例,在 WebSphere Application Server 中,您应 该开启动态缓存,并且使用 Servlet 缓存。系统性能可以得到很大的提高,而开 销是最小的,并且不影响编程模型。通过缓存来提高性能的好处是众所周知的事 情。遗憾的是,当前的 Java EE 规范没有包括一种用于 Servlet/JSP 缓存的机 制。然而,WebSphere 提供了对页面以及片断缓存的支持,这种支持是通过其动 态缓存功能来实现的,并且不需要对应用程序作出任何改变。其缓存的策略是声 明性的,而且其配置是通过 XML 配置描述符来实现的。因此,您的应用程序不会 受到影响,并保持与 Java EE 规范的兼容性和移植性,同时还从 WebSphere 的 Servlet 及 JSP 的缓存机制中得到性能的优化。 从 Servet 及 JSP 的动态缓存机制得到的性能的提高是显而易见的,这取决 于应用程序的特性。Cox 和 Martin [Cox] 指出,对一个现有的 RDF(资源描述 格式)站点摘要 (RSS) Servlet 使用动态缓存时,其性能可以提高 10%。请注意 这个实验只涉及到一个简单的 Servlet,这个性能的增长量可能并不能反映一个 复杂的应用程序。 为了更多地提高性能,将 WebSphere Servlet/JSP 结果缓存与 WebSphere 插 件 ESI Fragment 处理器、IBM HTTP Server Fast Response Cache Accelerator (FRCA) 和 Edge Server 缓存功能集成在一起。对于繁重的基于读取的工作负荷 ,通过使用这些功能可以得到许多额外的好处。(请参见参考资料的 [Willenborg] 和 [Bakalova] 中描述的性能的提高。) 作为该原则的另一个示例(我们常常发现客户不使用它,仅仅是因为他们根本 不知道它的存在),在编写 JDBC 代码时可以利用 WebSphere Prepared Statement Cache。在缺省情况下,当您在 WebSphere Application Server 中使 用 JDBC PreparedStatement 时,它将对该语句进行一次编译,然后将其放到缓 存中以便再次使用,不仅可以在创建 PreparedStatement 的同一方法中重用,还 可以跨程序重用,只要其中使用了相同的 SQL 代码或者另一个 PreparedStatement。省去重新编译的步骤可以极大降低调用 JDBC 驱动程序的次 数,并且提高应用程序的性能。要利用这个特性,您只需编写相应的 JDBC 代码 以使用 PreparedStatements,而不需要进行任何其他工作。在编写代码时,使用 PreparedStatement 代替常规的 JDBC Statement 类(它使用了纯的动态 SQL) ,您就可以实现性能的增强,而不会损失任何可移植性。 13. 充分利用现有的环境。 提供一个 Java EE EAR 和可配置的安装脚本,而不是黑盒二进制安装程序。 在大多数的实际场景中,大量的 WebSphere Application Server 用户在相同 的共享单元中运行多个应用程序。这意味着,如果您提供一个需要安装的应用程 序,那么它必须能够合理地安装到现有的基础设施中。这意味两个方面:首先, 您必须限制关于环境的假设的数目,并且因为您无法预料到所有的情况,所以您 的安装 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |