配置数据源和数据连接池

Ejb数据源和连接池 连接池实现的原理: 在应用启动时建立一定数据的数据库连接,并将这些数据库连接作为对象存储在一个容器对象中。而程序中所有的数据库请求访 问都可以共享这些连接,这样,通过复用这些已经建立的数据库连接,不必在每次访问数据库时都重新建立连接,极大的节省了系统资源 和时间。另外,为了回收并重新使用那些没有即使关闭的数据库连接,连接池都提供了一种超时回收机制。也就是当数据库的连接在指定 的事件内没有活动,连接池就把这些连接重新放到可以使用的队列。新的连接请求到来是便可以再次使用这些连接。这种超时回收连接的 机制可以克服数据库连接泄漏的问题。 DBCP连接池:它依赖于jakata commons-pool对象池吉之岛数据库连接池,DBCP可以直接在应用程序中使用。需要下载Jar: commons-dbcp-1.2.1.jar,commons-pool-1.3.jar,commons-collections-3.2.jar 将上述三个.jar文件保存到项目的WEB-INF/lib下,即加入到CLASSPATH中。 •Tomcat中的数据源 在程序中使用数据源有两种方式:一种是在程序中直接创建类的对象,该对象实现了JDBC驱动程序中的DataSource接口,并使用 该对象获取数据库连接;另一种方法是使用JNDI注册数据源,然后在程序中查询JNDI服务中的数据源,这样用户就只需要提供一个逻辑名 称,而不是数据库登录的具体细节。 一. 配置数据源:要使用第二种形式的JNDI数据源,必须首先进行配置数据源的JNDI命名服务。由于Tomcat提供了一个称为DBCP(Database Connection Pool)的数据源实现,所以可以在Service.xml文件中进行数据源的配置即可。 1. 安装jar,将上述几个jar存放与TOMCAT_HOME/common/lib位置。 2. 将相应的后台数据库的JDBC驱动器到TOMCAT_HOME/common/lib下。如OrecleJDBC驱动class12.jar,Sqlserver2000JDBC驱动 mssqlserver.jar,msutil.jar。 3. 配置TOMCAT_HOME/conf/server.xml文件的标签之间添加资源声明。 • 标记中配置国歌子标记。 --> web应用程序中数据源的使用方式: 1.设计提供连接对象Connection的类 package db; import java.sql.*; import javax.sql.DataSrouce; import javax.naming.Context; import javax.naming.InitialContext; //注意:获得的Connection对象不能在普通的java类(如在main函数中)直接调用。因为数据源有web服务器管理。 final public class Database{ public Database(){} privaate static DataSrouce ds = null ; //静态成员 /*static{ //初始化静态成员 try{ Context init = new InitialContext(): Context envCtx = (Context) initCtx.lookup("java:comp/env"); ds = (DataSource) envCtx.lookup("jdbc/oracle/ora9"); }catch(Exception e){e.printStackTrace();} }*/ //初始化数据源 public static void initialize(){ try{ Context init = new InitialContext(): Context envCtx = (Context) initCtx.lookup("java:comp/env"); ds = (DataSource) envCtx.lookup("jdbc/oracle/ora9"); }catch(Exception e){e.printStackTrace();} } //从连接池中获取一个连接 public static Connection getConnection(){ Connection conn = null; try{ conn = ds.getConnection(); }catch(Exception e){e.printStackTrace();} return conn; } } 2. 在业务逻辑方法处理类中使用池中的连接 package db; import java.sql.*; import java.util.*; //业务逻辑层 public class BusinessLayer{ //这个方法是在jsp页面或servlet中调用的业务逻辑方法(专业用法) public Collection getNewPost(String sql){ Collection postList = new ArrayList(); Database db = new Database(); Connection conn = null; Statement st = null; ResultSet rs = null; try{ conn = db.getConnection(): st = conn.createStatement(); rs = st.executeQuery(sql); String province , city,tele,post; while(rs.next()){ province = rs.getString("province"); city = rs.getString("city"); tele = rs.getString("tele"); post = rs.getString("post"); String t = province + "/t" + city + "/t" + tele + "/t" + post; PostBean pb = new PostBean(province,city,tele,post); postList.add(pb); System.out.println(t); } }catch(Exception e){ ... }finally{ try{ if(st != null )st.close(); if(rs != null)rs.close(); if(conn != null) conn.close(): }catch(Exception e){...} } return postList; } } 3. 在web页面中调用业务逻辑方法 <% //要执行的语句 String sql= "select * from post where province = '四川'"; db.BusinessLayer bl = new db.BusinessLayer(); Collection postList = bl.getNewPost(sq;); //获取集合对象 ...... %> 4. 配置web.xml文件(数据源在web.xml中的配置,对于Tomcat高版本不是必需的) JSP中的高级数据库应用实例 DataSource jdbc/oracle/ora9 //与server.xml中名称一致 javax.sql.DataSource Container Jboss数据源的配置 数据源用于配置数据库的连接信息,每个数据源必须指定一个唯一的JNDI名称。应用通过JNDI名称找到数据源。在Jboss中,有一个默认的数据源DefaultDS,他使用Jboss内置的HSQLDB数据库。实际项目中可能使用不同的数据库,如MySql、SqlServer、Oracle等。每种数据库的数据源配置版可以在Jboss安装目录/docs/examples/jca目录中找到,名称为:数据库-ds.xml。 数据源配置文件的取名格式必须为xxx-ds.xml,如:mysql-ds.xml,oracle-ds.xml。数据源部署前,必须把数据库驱动Jar拷贝到[jboss安装目录]/server/default/lib。拷贝后,必须重启Jboss服务器。 MySql数据源的配置: 【mysql-ds.xml]】 MySqlDS jdbc:mysql://localhost:3306/foshanshop com.mysql.jdbc.Driver root   aljoin      3      32      30000 5 org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter mySQL SqlServer数据源的配置: 【mssqlserver-ds.xml]】 MSSQLDS Jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=foshanshop Com.microsoft.jdbc.sqlserver.SQLServerDriver sa sa MS SQLSERVER2000 Oralce9i数据源的配置: 【oracle-ds.xml]】 OracleDS Jdbc:oracle:thin:@192.168.1.2:1521:FS Oracle.jdbc.driver.OracleDriver root root Org.jboss.resource.adapter.jdbc.vendor.OracleExceptoiinSorter Oracle9i •Jboss配置数据源操作方式: Jboss数据库连接池 wwx 为数据库名 UserInfor为表名 数据库用户名和密码分别为:root root 参考 http://www.matrix.org.cn/translation/Wiki.jsp?page=J2EEEJB_JbossJDBC (该blog 包括几个主要数据库的连接) MySQL是一个开放源代码的数据库,有很多开源项目和小型的社团都在使用它。 一 把mysql-connector-java-3.1.11-bin.jar复制到/server/default/lib目录下, (需要mysql-connector-java-3.0.16-ga.zip包 将里面的jar文件取出) 二 再把/docs/examples/jca/mysql-ds.xml复制到/server/default/deploy目录下。修改mysql-ds.xml文件,设置为 com.mysql.jdbc.Driver再把设置为jdbc:mysql:///,其中是数据库主机名是数据库名。 例: MySqlDS jdbc:mysql://localhost:3306/wwx//wwx com.mysql.jdbc.Driver root root 注意:如果localhost不行 就用127.0.0.1 这个一定没问题! 还有就是如果数据库没有密码!那么就这样 三 然后需要设置standardjaws.xml (或 jaws.xml 注: /server/default/conf目录下)文件的和元素: java:/MySqlDS mySql 。。。。。。。 四 同样也需要把standardjbosscmp-jdbc.xml (或 jbosscmp-jdbc.xml文件 注: /server/default/conf目录下)的 和 元素设置为下面这样: java:/MySqlDS mySql 说明:mySql在我的Jboss里面是被注释掉的,但我把拿回来! 就是把 <----和------ 都删掉! 五 最后再修改login-config.xml(/server/default/conf目录下)文件来使用MySQL: wwx root root jboss.jca:service=LocalTxCM,name=MySqlDS 说明:这段代码就直接 copy到login-config.xml里面就ok!不知道往哪放吗? 嘿嘿,就放在 下面吧! 还有就是如果数据库没有密码!那么就这样 六 修改了mysql-ds.xml, standardjaws.xml, standardjbosscmp-jdbc.xml,和 login-config.xml 文件就可以在Jboss上使用MySQL了。 七 调试代码 在jboss-4.0.2/server/default/deploy下 建个文件夹 : test.war 里面test.jsp, 代码如下! <%@pageimport="javax.naming.*"%> <%@pageimport="javax.sql.*"%> <%@pageimport="java.sql.*"%> <% try { Context ctx = new InitialContext(); //得到初始化上下文 Object obj = ctx.lookup("java:/MySqlDS");//查找连接池 DataSource ds = (DataSource) obj;//转换成DataSource Connection connect = ds.getConnection();//从连接池中得到一个连接 Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from num");//这是你的数据库的表噢! while(rs.next()){ out.println(rs.getObject("NO"));//取出一个字段 } } catch (NamingException e) { e.printStackTrace(); } catch(SQLException e1){ e1.printStackTrace(); } out.flush(); out.close(); %>

你可能感兴趣的:(Ejb学习资料,数据库,sqlserver,数据库连接池,jboss,exception,jdbc)