JBoss配置连接池

         什么是数据库连接池?

         配置连接池为的是解决效率问题.由于每创建一个连接都是非常耗时的,有了连接池,就能够提前放一些连接进去.以后我们再用连接就去连接池里面取而不是每次都创建.可是我们知道连接池是有上限的,假设仅仅同意我们放10,那么当这10个连接都被占用的时候,下一个用户再来请求连接将不能得到,仅仅好等待,假设等的时间太长了就会抛出timeout的异常.使用完连接后要释放,否则会一直占着资源,当连接所有被占用而得不到释放时,就会出现错误...

  

         JBoss实现了J2EE13个规范包含JNDI,JNDI採用树形结构管理我们的对象,tomcatJBoss等server对JNDI做了实现,实现它之后能够管理对象.

 

        採用JNDI能够使我们的应用和实际实现解耦,,我们的应用中仅仅管从连接池中取连接,而不用管使用的是哪个连接池实现,连接池的实现对我们是透明的.也就是说,我们使用连接池时,根本没有写dbcp(dbcp实现了DataSource接口),我们也不知道它是dbcp.我们仅仅管使用连接不须要考虑连接是怎样被创建的.对于我们来说这就像是一个工厂,隐藏了创建的细节.所以,这就是面向接口编程.我们拿到DataSource接口就OK.

 

 

         以下我们看看数据源是怎样在JBoss注冊的,我们又是怎样从连接池取连接的?

         在JBossstandalone.xml配置文件<datasources></datasources>节点中配置数据源,代码例如以下:

 <datasource jta="true" jndi-name="java:jboss/datasources/PjMysqlDS" pool-name="PjMysqlDS" enabled="true" use-java-context="true">
          <connection-url>jdbc:mysql://192.168.24.118:3306/itoo_assess?useUnicode=true&characterEncoding=UTF-8</connection-url>
          <driver>mysql</driver>
          <pool>
                <prefill>false</prefill>
                <use-strict-min>false</use-strict-min>
                <flush-strategy>FailingConnectionOnly</flush-strategy>
          </pool>
          <security>
                <user-name>root</user-name>
                <password>888888</password>
          </security>
 </datasource>



public Connection getConnection{
		Connection conn=null;
		PreparedStatement pstmt=null;
	    try{
			Context ctx=new InitialContext();
			//通过JNDI查找DataSource
			DataSource ds=(DataSource)ctx.lookup("java:jboss/datasources/PjMysqlDS");
			conn=ds.getConnection();
	    }catch(Exception e){
	    	e.printStackTrace();
	    }
	    return conn;
	}


          JNDI另一个典型的应用,即分布式对象的訪问.EJB.  把对象注冊到这棵树上,起个名,远程lookup这个服务,仅仅要知道这个服务所处机器的IP和port号,就能够将这个服务传到client的本地.

 

        知识都是连通的,当我们可以熟练地从一个跳到还有一个就说明我们会学了.


posted @ 2017-06-20 21:19  zhchoutai  阅读(2147)  评论(0编辑  收藏  举报