我们正在努力实现Oracle连接与Spring框架的帮助下池。 我们使用DBCP连接池的方法。 然而DBCP和春天之间的整合不走这很好。
我们面临的问题是,DBCP返回PoolableConnections对象而甲骨文预计的OracleConnection对象。 (抛出ClassCastException异常)
看来,这个问题已经在Oracle 11g中被处理。 不过我很好奇,其他人如何使用Spring框架适用于Oracle 10g(使用Tomcat)实施了Oracle连接池。
我们使用iBATIS作为ORM框架。
我相信,有一种方法。 任何帮助表示赞赏。
我会用甲骨文提供的解决方案,这包括在他们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>
我使用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文件...
你不应该实现自己的池,如果这就是你使用的是什么。 Tomcat的已经不适合您,取而代之的是,在Tomcat的数据源,并让您的ORM框架使用它(当你定义你的Tomcat的数据源,你可以有指定池配置)。
如果你能发布一些代码片段,具体而言,相关的Spring上下文配置,我可以帮你提供你会怎么做。
下面是Tomcat文档,显示你你到底如何做到这一点:
- http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
顺便说一句,Tomcat使用DBCP还,这是最好依赖于JNDI,因为它使你的代码更容易移植(从一个环境到另一个 - 例如,开发以分期到生产,甚至在应用程序服务器 - 例如,在WebSphere中,WebLogic等)。
而不是使用SimpleNativeJdbcExtractor使用CommonsDbcpNativeJdbcExtractor获取本机的连接。 有用。
当与包装的连接而不是语句的简单连接池的工作,一个SimpleNativeJdbcExtractor往往是足够的。 然而,一些池(如雅加达下议院DBCP)包装所有JDBC对象,他们返回:因此,你需要使用一个特定的NativeJdbcExtractor(如CommonsDbcpNativeJdbcExtractor)他们。
点击这里[http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/jdbc/support/nativejdbc/NativeJdbcExtractor.html]
我也面临着同样的问题,因为你是..所以我使用了Oracle本机连接池..工作平稳..
这里是链接的详细信息http://www.lambdaprobe.org/d/oracle.shtml
谢谢! 图标