我们有一个使用spring的网站。 我在代码中找到了2种连接oracle数据库的方法,都使用了一个名为phareDataSource的bean:
第一种方法:
<bean id="phareDataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<property name="url"
value="${hibernate.connection.url}" />
<property name="username" value="${hibernate.connection.username}" />
<property name="password" value="${hibernate.connection.password}" />
</bean>
和第二种方法:
<bean id="phareDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/PHARE</value>
</property>
</bean>
在Jonas目录中:jonas.properties
jonas.service.dbm.class org.ow2.jonas.dbm.internal.JOnASDataBaseManagerService
jonas.service.dbm.datasources PHARERH
PHARERH.properties:
datasource.name jdbc/PHARE
datasource.url jdbc\:oracle\:thin\:@blabla\:1521\:R59A001
datasource.classname oracle.jdbc.driver.OracleDriver
datasource.username bla
datasource.password bla
我们正在构建第一个方法或第二个方法(maven活动配置文件)。
第一个使用简单的配置文件,第二个使用位于jonas conf目录中的配置文件。
由于我们在开发环境中使用tomcat,因此我们选择了第一种方法。
但是在安装了Jonas的int和prod环境中,我们不应该使用第二种方法吗?
性能更好吗?
答案 0 :(得分:0)
两者都将使用JDBC连接池来管理您的连接,因此我不希望在性能方面存在重大差异。
方法1不使用任何JOnAS功能来创建或管理JDBC连接+池。相同的配置将在应用程序服务器之外工作。这对于测试非常有用,无需部署到应用程序服务器。
方法2将使用由JOnAS(应用程序服务器)配置和管理的JDBC连接池。
通常情况下,如果您决定使用应用程序容器(例如JOnAS,JBoss,Websphere等),那么让容器管理您使用的资源通常是个好主意。这就是他们的目的,您可能需要一些高级功能来管理配置的资源。还有一个好处是,您的应用程序无需知道正在使用的实现/驱动程序(或用户名/密码,因此您可以将EAR / WAR部署到不同的应用程序服务器,而无需更改应用程序配置。这些详细信息是而是在服务器实例中配置。
如果在应用程序服务器中使用方法1,服务器将无法控制正在创建的线程,因为它对它们一无所知。