是否可以使用UCP创建一个OracleConnection来使用enqueue方法?
现在,使用连接池从java客户机将消息排队到Oracle AQ队列的最佳方法是什么?
Javadoc来自OracleDatasource关于缓存弃用的建议,并推荐使用UCP。但是我尝试用它实例化一个连接,但是不可能将它转换为OracleConnection,我得到了一个代理异常。
很明显,UCP的设计是为了返回常见的java接口,比如从sql包返回连接,并且不熟悉Oracle特定的用例?
有人能帮我理解如何通过连接池使用Oracle AQ吗?
谢谢。
Java依赖关系:
2.4.13
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
}发布于 2022-10-07 18:30:42
您可以键入oracle.jdbc.OracleConnection的UCP连接,然后调用下面的API来对消息进行排队。
公共空队列(String queueName,oracle.jdbc.aq.AQEnqueueOptions opt,oracle.jdbc.aq.AQMessage mesg)抛出SQLException;
https://stackoverflow.com/questions/73987847
复制相似问题