2012-05-01 47 views
1

Mule真的是neato,但是與spring共享的xsd東西似乎永遠不會很好。在Mule ee中使用spring設置oracle連接池3.2.2

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

我想獲得一個連接池設置,因爲每個查詢運行我的服務簡單需要太長的時間來實例化。每次服務電話我都被迫啓動9次查詢,沒有電話池的延遲會影響性能。對於dataSource,我嘗試了許多不同的oracle v6類,但我似乎總是得到「由於缺少setter而無法編寫參數」錯誤。 就好像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> 

回答

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

+0

當未來的新技術使這成爲可能時,我保證會建立一個時間機器並回來發佈只有oracle的解決方案。然後我會接受答案。那是除非別人擊敗了我。 – branchgabriel

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

com.mchange.v2.c3p0.ComboPooledDataSource不是一部分的問題參數。感謝alt解決方案,雖然 – branchgabriel

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>