将Oracle队列与UCP一起使用



是否可以使用UCP创建OracleConnection以使用入队方法?

现在,使用连接池将消息从java客户端排入OracleAQ队列的最佳方式是什么?

OracleDatasource中的Javadoc建议缓存弃用,并建议使用UCP。但我尝试用它实例化一个连接,但不可能将它强制转换为OracleConnection,我得到了一个代理异常。

很明显,UCP被设计为从sql包返回常见的java接口,如Connection,并且不熟悉Oracle特定的用例?

有人可以帮助我了解如何通过连接池使用Oracle AQ?

谢谢。

Java依赖项:

  • 弹簧套:2.4.13
  • com.oracle.database.jdbc:ojdbc8:21.5.0.0
  • com.oracle.database.jdbc:ucp:21.5.0.0

Spring ucp属性:

spring.datasource.type=oracle.ucp.jdbc.PoolDataSource
spring.datasource.oracleucp.connection-factory-class-name=oracle.jdbc.pool.OracleDataSource

异常消息:

java.lang.ClassCastException: oracle.ucp.jdbc.proxy.oracle$1ucp$1jdbc$1proxy$1oracle$1ConnectionProxy$2oracle$1jdbc$1internal$1OracleConnection$$$Proxy cannot be cast to oracle.jdbc.driver.OracleConnection

源代码:

@Autowired
public InsertController(DataSource ds) {
this.ds = ds;
}
private OracleConnection getConnection() throws Exception {
Connection con = this.ds.getConnection();
return (OracleConnection) con; //Proxy error propagation
}

您可以将UCP连接强制转换为oracle.jdbc.OrcleConnection,然后调用下面的API将消息排入队列
公共无效队列(字符串queueName,oracle.jdbc.aq.AQEnqueueOptions opt,oracle.jdbc.aq.AQMessage mesg(抛出SQLException;

相关内容

  • 没有找到相关文章

最新更新