У меня есть класс ниже, который хорошо работает в 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;
}
Я обновился до версии 2.0.4, в которой нет NativeJdbcExtractor. Может ли кто-нибудь помочь мне, как перенастроить вышеуказанное, чтобы получить connectionFactory.




Вся иерархия nativejdbc больше не существует, и то, чего нет, больше нельзя использовать. Так что либо не обновляйтесь, либо выясняйте, как это не нужно (jdbc 4 может использовать unwrap для получения фактического базового соединения).
Чтобы получить фактическое базовое соединение, в Connection. Таким образом, что-то вроде connection.unwrap(OracleConnection.class) должно дать вам фактическое базовое соединение. Однако для этого может потребоваться дополнительное обновление aq-jms-connection-factory, которое, я не уверен, поддерживает Spring 5.0.
Какая ошибка? В вашем вопросе ничего не говорится об исключении.
Извините, это опечатка. Я в основном использую приведенный выше код для чтения содержимого из очереди Oracle. Ошибка, которую я имел в виду, заключалась в том, что очередь не читается.
Я использовал что-то вроде этого, что может вам помочь:
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;
}
Ошибок нет, он не взял содержимое из очереди оракула.
После небольшого анализа я обнаружил, что приведенный ниже код будет работать, но ошибка остается прежней. Публичный компонент ConnectionFactory connectionFactory () выдает исключение JMSException {return AQjmsFactory.getQueueConnectionFactory (dataSource, true); }