background image

JSP 应用程序效率的提升

JSP 响应速度过慢,当客户访问次数剧增时,WEB 应用能否承受日益增加的访问量?
本文主要讲述调整 JSP 和 servlet 的一些非常实用的方法,它可使你的 servlet 和 JSP 页面
响应更快,扩展性更强。
  而且在用户数增加的情况下,系统负载会呈现出平滑上长的趋势。在本文中,我将通
过一些实际例子和配置方法使得你的应用程序的性能有出人意料的提升。其中,某些调优
技术是在你的编程工作中实现的。
  而另一些技术是与应用服务器的配置相关的。在本文中,我们将详细地描述怎样通过
调整 servlet 和 JSP 页面,来提高你的应用程序的总体性能。在阅读本文之前,假设你有基
本的 servlet 和 JSP 的知识。
  方法一:在 servlet 的 init()方法中缓存数据
  当应用服务器初始化 servlet 实例之后,为客户端请求提供服务之前,它会调用这个
servlet 的 init()方法。在一个 servlet 的生命周期中,init()方法只会被调用一次。通过在 init()
方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高
系统性能。
  例如,通过在 init()方法中建立一个 JDBC 连接池是一个最佳例子,假设我们是用
jdbc2.0 的 DataSource 接口来取得数据库连接,在通常的情况下,我们需要通过 JNDI 来取
得具体的数据源。我们可以想象在一个具体的应用中,如果每次 SQL 请求都要执行一次
JNDI 查 询 的 话 , 那 系 统 性 能 将 会 急 剧 下 降 。 解 决 方 法 是 如 下 代 码 , 它 通 过 缓 存
DataSource,使得下一次 SQL 调用时仍然可以继续利用它:
  public class ControllerServlet
  extends HttpServlet
  {
  private javax.sql.DataSource
  testDS = null;
  public void init(ServletConfig config)
  throws ServletException
  {
  super.init(config);
  Context ctx = null;
  try
  {
  ctx = new InitialContext();
  testDS = (javax.sql.DataSource)
  ctx.lookup("jdbc/testDS");
  }
  catch(NamingException ne)
  {