使用一个JSP中的connection 缓存

本文来自程式先锋网站:www.javabiz.cn

Jaguar 提供了一个非常有用的缓存机制来提供数据库访问速度。可以根据这个缓存机制来缓存ODBC,JDBC或者Oracle的连接。
注意:java组件不能使用缓存ODBC连接,只能缓存JDBC连接,如果实在没有JDBC驱动的话, 也可以勉强使用由SUN公司提供的ODBC-JDBC,这种桥的性能很差,而且在多线程的应用系统中可靠性很差。

要想定义一个缓存的ODBC-JDBC(桥)连接,可以按照下面的步骤:

通过ODBC管理面板设置,定义一个普通的系统数据源(DSN)

在 jaguar 里面定义缓存 :
General Tab : Server name = jdbc:odbc:YourSystemDSNName with user/pwd
Driver Tab : DLL 或者类名 name = sun.jdbc.odbc.JdbcOdbcDriver jdbc radio要选中
Cache Tab : 选中名称相对应的checkbox  
<%@page contentType="text/html"%>
<html>
<head><title>JSP Page</title></head>
<body>
<%@ page import="java.sql.*" %>
<%
  com.sybase.jaguar.jcm.JCMCache  jcmCache= null;
  java.sql.Connection dbConn = null;
  String jcmCacheString = "mycachename";
  String msg = "";
      
  try {
      jcmCache =
        com.sybase.jaguar.jcm.JCM.getCacheByName(jcmCacheString);
      dbConn =
        jcmCache.getConnection(com.sybase.jaguar.jcm.JCMCache.JCM_WAIT);

      Statement stmt = dbConn.createStatement();
      ResultSet rs =
        stmt.executeQuery
           ("select msg from messages where msgid='00001'");

      if(rs != null) {
       while(rs.next()) {
          msg = rs.getString("msg");
          }
       }         
      rs.close();
      dbConn.close();
  }
  catch (Exception e) {
    out.println("OUPS " + e.getMessage() + "<BR>");
    }
%>
msgtext =
      <i><%= msg %></i>
</body>
</html>

不要把缓存的名字硬编码到你的组件中,让这个名字放在WEB应用环境变量中是个不错的选择,这种方法使得系统维护和更新起来要更容易一些。
这个例子里面, myconnection 包括了所使用缓存的名称.
  javax.naming.InitialContext ctx = new javax.naming.InitialContext();
  javax.sql.DataSource ds = (javax.sql.DataSource)
      ctx.lookup("java:comp/env/jdbc/myconnection");
  java.sql.Connection con = ds.getConnection();
  java.sql.PreparedStatement stmt = con.prepareStatement(sql);
  java.sql.ResultSet rs = stmt.executeQuery();

  while (rs.next()) {
     //do something
  }

总结,本文把使用Jaguar 使用缓存ODBC的连接方式使用做了一个示例,仅供各位参考,欢迎指教。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章