甲骨文 - 连接弹簧框架池(Oracle - connection Pooling with spr

2019-07-30 02:53发布

我们正在努力实现Oracle连接与Spring框架的帮助下池。 我们使用DBCP连接池的方法。 然而DBCP和春天之间的整合不走这很好。

我们面临的问题是,DBCP返回PoolableConnections对象而甲骨文预计的OracleConnection对象。 (抛出ClassCastException异常)

看来,这个问题已经在Oracle 11g中被处理。 不过我很好奇,其他人如何使用Spring框架适用于Oracle 10g(使用Tomcat)实施了Oracle连接池。

我们使用iBATIS作为ORM框架。

我相信,有一种方法。 任何帮助表示赞赏。

Answer 1:

我会用甲骨文提供的解决方案,这包括在他们ojdbc罐子。 较老的方法是用类OracleConnectionPoolDataSource但现在你可以设置定期OracleDataSource参数,并得到连接池。

这里是如何做到这一点的春天:

<bean id="datasource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
   <property name="connectionCachingEnabled" value="true" />
   <property name="URL" value="${jdbc.url}" />
   ...all your connection properties
   <property name="connectionCacheProperties">
      <props merge="default">
         <prop key="MinLimit>3</prop>
         <prop key="MaxLimit">20</prop>
      </props>
   </property>
</bean>


Answer 2:

我使用C3PO建立连接。 它还具有优势做连接池为您服务。 通过你们的Spring配置文件中定义类型如com.mchange.v2.c3p0.ComboPooledDataSource(或类似)的数据源的bean。 之前我碰到与连接池的麻烦,我竟然用的是不建议在生产中使用弹簧(DriverManagerDataSource和)中的一个,因为它实际上没有做连接池。

下面是一个例子弹簧配置。

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE"/>
    <property name="user" value="username"/>
    <property name="password" value="secret"/>
    <property name="minPoolSize" value="5"/>
    <property name="maxPoolSize" value="20"/>
    <property name="acquireIncrement" value="1"/>
    <property name="idleConnectionTestPeriod" value="100"/>
    <property name="maxStatements" value="0"/>
    <property name="checkoutTimeout" value="60000"/>

春天然后注入数据源bean进入休眠,一切都很好。 您还需要有在classpath的C3PO jar文件...



Answer 3:

应该实现自己的池,如果这就是你使用的是什么。 Tomcat的已经不适合您,取而代之的是,在Tomcat的数据源,并让您的ORM框架使用它(当你定义你的Tomcat的数据源,你可以有指定池配置)。

如果你能发布一些代码片段,具体而言,相关的Spring上下文配置,我可以帮你提供你会怎么做。

下面是Tomcat文档,显示你你到底如何做到这一点:

  • http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html

顺便说一句,Tomcat使用DBCP还,这是最好依赖于JNDI,因为它使你的代码更容易移植(从一个环境到另一个 - 例如,开发以分期到生产,甚至在应用程序服务器 - 例如,在WebSphere中,WebLogic等)。



Answer 4:

而不是使用SimpleNativeJdbcExtractor使用CommonsDbcpNativeJdbcExtractor获取本机的连接。 有用。

当与包装的连接而不是语句的简单连接池的工作,一个SimpleNativeJdbcExtractor往往是足够的。 然而,一些池(如雅加达下议院DBCP)包装所有JDBC对象,他们返回:因此,你需要使用一个特定的NativeJdbcExtractor(如CommonsDbcpNativeJdbcExtractor)他们。

点击这里[http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/jdbc/support/nativejdbc/NativeJdbcExtractor.html]



Answer 5:

我也面临着同样的问题,因为你是..所以我使用了Oracle本机连接池..工作平稳..

这里是链接的详细信息http://www.lambdaprobe.org/d/oracle.shtml

谢谢! 图标



文章来源: Oracle - connection Pooling with spring framework