2017-04-18 15 views
1

我有一个web应用程序,我正在使用jboss EAP 6.4。在那里我使用两种配置来创建数据源。数据源也在独立文件中定义,如果在创建数据源对象时抛出任何异常,则数据源是在代码中手动创建的。对于相同的代码下面给出:为什么在jboss EAP 6.4的standalone.xml中创建数据源比手动创建数据源时的响应时间更长

@Bean 
    public DataSource getDataSource() { 
     try { 
      Object object = new JndiTemplate().lookup(JNDI); 
      return DataSource) object; 
     } catch (NamingException e) { 
      DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
      dataSource.setDriverClassName(---); 
      dataSource.setUrl(---); 
      dataSource.setUsername(---); 
      dataSource.setPassword(---); 

      return dataSource; 
     } 
    } 

这里是我的standalone.xml片断

<datasource jta="false" jndi-name="xyz" pool-name="xyDatasource" enabled="true" use-ccm="false"> 
        <connection-url>jdbc:oracle:thin:@localhost:1521:xe</connection-url> 
        <driver>OracleJDBCDriver</driver> 
        <pool> 
         <min-pool-size>20</min-pool-size> 
         <max-pool-size>30</max-pool-size> 
         <use-strict-min>true</use-strict-min> 
         <flush-strategy>FailingConnectionOnly</flush-strategy> 
        </pool> 
        <security> 
         <user-name>abc</user-name> 
         <password>xyz</password> 
        </security> 
        <validation> 
         <validate-on-match>false</validate-on-match> 
         <background-validation>false</background-validation> 
        </validation> 
        <statement> 
         <share-prepared-statements>false</share-prepared-statements> 
        </statement> 
     </datasource> 

成功创建连接时使用独立版本的数据源,当时的响应时间都在这里的问题是与在捕获条件中的代码中创建时相比,请求相当高。

我搜索了很多,但没有找到任何理由。

回答

0

根据我的理解,当代码通过在standlone.xml文件中定义的数据源获取连接时,它将从配置中定义的池中获取连接。每次执行操作时都不需要直接从数据库连接。

但是,当直接使用代码连接到数据库时,其代码负责从数据库获取连接,然后执行查找。

参考https://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html

+0

Varsha:我的问题是,为什么在独立的文件连接池比单个连接或连接池的代码版本慢。你的回答我不清楚 –