Spring Boot 2.x连接工厂

时间:2018-12-06 06:36:15

标签: java spring spring-mvc spring-boot

我有下面的类在Spring Boot 1.5.x中很好用

public ConnectionFactory connectionFactory() {
        org.springframework.data.jdbc.config.oracle.AqJmsFactoryBeanFactory f=new AqJmsFactoryBeanFactory();
        f.setDataSource(dataSource);
        f.setCoordinateWithDataSourceTransactions(true);
        f.setNativeJdbcExtractor(new org.springframework.jdbc.support.nativejdbc.Jdbc4NativeJdbcExtractor());
        f.setConnectionFactoryType(ConnectionFactoryType.QUEUE_CONNECTION);
        try {
            return f.getObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

我现在已经升级到不存在NativeJdbcExtractor的2.0.4版本。有人可以帮我如何重新配置​​上面的内容以获取connectionFactory。

2 个答案:

答案 0 :(得分:0)

整个nativejdbc层次结构已不存在,因此不再可用,因此不升级或找出不需要它的方法(jdbc 4可以使用unwrap来获取实际的基础连接)。

要获取实际的基础连接,请在Connection上使用一个拆包方法。因此,connection.unwrap(OracleConnection.class)之类的东西应该可以为您提供实际的基础连接。但是,这可能需要对aq-jms-connection-factory进行额外的升级,但我不确定它是否支持Spring 5.0。

答案 1 :(得分:0)

我使用了类似的方法可以为您提供帮助:

public OracleConnection getOracleConnection(Connection connection) throws SQLException {
    OracleConnection oconn = null;
    try {
        if (connection.isWrapperFor(oracle.jdbc.OracleConnection.class)) {
            oconn = (OracleConnection) connection.unwrap(oracle.jdbc.OracleConnection.class)._getPC();
        }
    } catch (SQLException e) {
        throw e;
    }
    return oconn;
}