有什么区别:BasicDataSource和JOnASDataBaseManagerService

时间:2014-04-09 08:14:10

标签: spring oracle spring-jdbc

我们有一个使用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环境中,我们不应该使用第二种方法吗?

性能更好吗?

1 个答案:

答案 0 :(得分:0)

两者都将使用JDBC连接池来管理您的连接,因此我不希望在性能方面存在重大差异。

方法1不使用任何JOnAS功能来创建或管理JDBC连接+池。相同的配置将在应用程序服务器之外工作。这对于测试非常有用,无需部署到应用程序服务器。

方法2将使用由JOnAS(应用程序服务器)配置和管理的JDBC连接池。

通常情况下,如果您决定使用应用程序容器(例如JOnAS,JBoss,Websphere等),那么让容器管理您使用的资源通常是个好主意。这就是他们的目的,您可能需要一些高级功能来管理配置的资源。还有一个好处是,您的应用程序无需知道正在使用的实现/驱动程序(或用户名/密码,因此您可以将EAR / WAR部署到不同的应用程序服务器,而无需更改应用程序配置。这些详细信息是而是在服务器实例中配置。

如果在应用程序服务器中使用方法1,服务器将无法控制正在创建的线程,因为它对它们一无所知。