在Mule ee 3.2.2中使用spring设置oracle连接池

时间:2012-05-01 14:15:00

标签: oracle connection-pooling mule spring-jdbc

骡子真的是neato但是弹簧的刚性共享xsd东西看起来似乎并不好看。

Mulesoft提供的可怕文件仍然是......可怕的。

我正在尝试建立连接池,因为为我的服务简单运行的每个查询都需要很长时间才能实例化。我被迫每次服务调用启动9个查询,没有池的延迟会影响性能。对于dataSource,我尝试了许多不同的oracle v6类,但我似乎总是得到“由于缺少setter而无法写param”错误。 就像spring属性编辑器impl被强制退出mulesoft xml架构一样。

如果有人能够使oracle连接池与oracle类一起工作而不是c3p0或dbcp的东西,那么请联系兄弟。

这是我的xml汤。

<spring:beans>
    <context:property-placeholder xmlns:context="http://www.springframework.org/schema/context" location="classpath:somepropfile.properties"></context:property-placeholder>
<spring:bean id="jdbcDataSource" name="jdbcConnectionInfo" class="oracle.jdbc.pool.OraclePooledConnection" doc:name="Bean">
        <spring:property name="url" value="${JDBC.URL}"/>
        <spring:property name="username" value="${JDBC.user}"/>
        <spring:property name="password" value="${JDBC.password}"/>
        <spring:property name="connectionCacheProperties" ref="cacheProperties"/>
    </spring:bean>
<spring:bean id="cacheProperties" name="cacheProps" class="com.erac.obr_mule.appsec.PoolCacheProperties" doc:name="Bean">
        <spring:property name="validateConnection" value="true"/>
        <spring:property name="maxLimit" value="5"/>
        <spring:property name="inactivityTimeout" value="180"/>
        <spring:property name="connectionWaitTimeout" value="120"/>
        <spring:property name="minLimit" value="1"/>
        <spring:property name="initialLimit" value="1"/>
    </spring:bean>   

</spring:beans>

<jdbc:connector name="JDBC" dataSource-ref="jdbcDataSource" queryTimeout="-1" pollingFrequency="0" doc:name="JDBC">
    <jdbc:query key="getMuhDatasHooker" value=" BUNCH O SQL " />
</jdbc:connector>

3 个答案:

答案 0 :(得分:2)

根据this answer,你是这样的:

<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>

答案 1 :(得分:1)

我选择了dbcp解决方案。原来我能够在我们受祝福的古物宝库中找到它并使用它。

也许在3.3中他们将只有一个oracle解决方案

 <spring:bean id="jdbcDataSource" name="jdbcConnectionInfo" class="org.apache.commons.dbcp.BasicDataSource" doc:name="Bean">
        <spring:property name="driverClassName" value="oracle.jdbc.pool.OracleDataSource"/>
        <spring:property name="url" value="${JDBC.URL}"/>
        <spring:property name="username" value="${JDBC.user}"/>
        <spring:property name="password" value="${JDBC.password}"/>
        <spring:property name="initialSize" value="1"/>
        <spring:property name="maxActive" value="9"/>
        <spring:property name="maxIdle" value="180"/>

答案 2 :(得分:0)

使用以下用于oracle连接池

<bean id="connectionPool1" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="connectionCachingEnabled" value="true" />
<property name="URL">
         <value>ORACLE URL</value>
    </property>
<property name="user">
         <value>user id</value>
    </property>
<property name="password">
         <value>user password</value>
    </property>
<property name="connectionCacheProperties">
      <value>
        MinLimit:1
        MaxLimit:5
        InitialLimit:1
        ConnectionWaitTimeout:120
        InactivityTimeout:180
        ValidateConnection:true
      </value>
   </property>
</bean>