Java 为什么在Jboss EAP 6.4中以standalone.xml创建数据源会比在代码中手动创建数据源提供更长的响应时间
我有一个使用jboss EAP 6.4的web应用程序。在这里,我使用两种配置来创建数据源。数据源也在独立文件中定义,如果在创建数据源对象时引发任何异常,则数据源将在代码中手动创建。其代码如下所示:Java 为什么在Jboss EAP 6.4中以standalone.xml创建数据源会比在代码中手动创建数据源提供更长的响应时间,java,datasource,jboss6.x,Java,Datasource,Jboss6.x,我有一个使用jboss EAP 6.4的web应用程序。在这里,我使用两种配置来创建数据源。数据源也在独立文件中定义,如果在创建数据源对象时引发任何异常,则数据源将在代码中手动创建。其代码如下所示: @Bean public DataSource getDataSource() { try { Object object = new JndiTemplate().lookup(JNDI); return DataSource
@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>
jdbc:oracle:thin:@localhost:1521:xe
OracleJDBCDriver
20
30
真的
仅连接失败
abc
xyz
假的
假的
假的
这里的问题是,当使用独立版本的数据源成功创建连接时,与在catch条件下的代码中创建连接时相比,所有请求的响应时间都非常长
我搜索了很多,但没有找到任何原因。根据我的理解,当代码通过standlone.xml文件中定义的数据源获取连接时,它从配置中定义的池获取连接。它不必每次执行操作时都直接从数据库连接 然而,当使用代码直接连接到数据库时,它的代码负责从数据库获取连接,然后进行查找
请参阅Varsha:我的问题是为什么独立文件中的连接池比单一连接或连接池的代码版本慢。你的回答我不清楚