(我希望下面的内容有道理,我对格式化有点困难)。
我们有一个应用程序(目前正在从大约2005年的技术中刷新),其所有者需要使用Oracle AQ进行消息处理。
我们正在使用Spring JDBC扩展,当应用程序开始侦听队列时,它会得到一个ClassCastException,说" X不能转换为oracle.jdbc.internal.OracleConnection"。
当我们使用Wildfly中定义的数据源时,X是来自jboss的WrappedConnectionJDK7,例如
<bean id="dataSource-supsrep"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
<property name="username" value="...." />
<property name="password" value="...." />
</bean>
当我们像这样定义数据源时,或X是来自commons.dbcp的PoolGuardConnectionWrapper:
<bean id="dataSource-supsrep"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
<property name="username" value="...." />
<property name="password" value="...." />
</bean>
Message Listener bean的定义如下:
<bean id="messageListener" class="xxx.report.dispatch.DispatchMDB" />
Message Listener容器bean是这样的:
<bean id="reportProcessorXslfoHigh"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="sessionTransacted" value="true" />
<property name="connectionFactory" ref="AQconnectionFactory" />
<property name="destinationName" value="Q1_XSLFO_HIGH" />
<property name="messageListener" ref="messageListener" />
<property name="transactionManager" ref="transactionManager" />
<property name="concurrentConsumers" value="1" />
<property name="maxConcurrentConsumers" value="1" />
<property name="receiveTimeout" value="30000" />
<property name="idleTaskExecutionLimit" value="30" />
<property name="idleConsumerLimit" value="1" />
</bean>
连接工厂是这样的:
<orcl:aq-jms-connection-factory id="AQconnectionFactory"
data-source="dataSource-supsrep" native-jdbc- extractor="oracleNativeJdbcExtractor" />
它使用Native JDBC Extractor:
<bean id="oracleNativeJdbcExtractor"
class="org.springframework.jdbc.support
.nativejdbc.OracleJdbc4NativeJdbcExtractor" />
所以我的问题是 - 这可以通过Spring配置细节来克服 - 还是有另一种方式围绕它?显然需要基础连接,但经过3天的研究后,我看不出它是如何完成的。
感激地收到任何线索!
谢谢, 约翰