将Oracle队列与UCP一起使用

pqwbnv8z  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(132)

是否可以使用UCP创建OracleConnection以使用入队方法?
现在,使用连接池将消息从Java客户端排入Oracle AQ队列的最佳方法是什么?
来自OracleDatasource的Javadoc提供了有关高速缓存过时的建议,并建议改为使用UCP。但我已尝试使用它示例化连接,但无法将其强制转换为OracleConnection,而是出现了代理异常错误。
很明显,UCP旨在从sql包返回常见的java接口(如Connection),并且不熟悉Oracle特定的用例?
有人能帮助我了解如何通过连接池使用Oracle AQ吗?

  • 谢谢-谢谢
    Java依赖关系:
  • Spring Boot :2.4.13
  • 数据库管理系统21.5.0.0
  • 数据库管理系统的数据库管理21.5.0.0

SpringUCP属性:

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

dced5bon1#

您可以将UCP连接类型转换为oracle.jdbc.OracleConnection,然后调用下面的API将消息入队。
如果队列中的消息是空的,则会抛出SQL异常;

相关问题