是否可以使用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
}
1条答案
按热度按时间dced5bon1#
您可以将UCP连接类型转换为oracle.jdbc.OracleConnection,然后调用下面的API将消息入队。
如果队列中的消息是空的,则会抛出SQL异常;