как я могу типизировать NewProxyConnection в AS400JDBCConnection - PullRequest
0 голосов
/ 05 сентября 2011

Я новичок в весне. Я использую ComboPooledDataSource для пула подключений в Spring. Я использую AS400 для подключения. Моя проблема в том, что когда я использую это соединение и пытаюсь выполнить AS400JDBCConnection as400Conn = (AS400JDBCConnection) conn; Это дает ClassCastCastException, поскольку объект соединения, возвращаемый ComboPooledDataSource, имеет тип NewProxyConnection, как я могу типизировать его в AS400JDBCConnection.

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Вы не должны разыгрывать AS400JDBCConnection.Все соответствующие методы должны быть доступны через интерфейс Connection.

То, с чем вы имеете дело, это не фактический объект Соединения (AS400JDBCConnection), а прокси-объект, который обернут вокруг него и управляет доступом к оригиналуОбъект подключения.Различные механизмы прокси описаны в Общие сведения о прокси-серверах AOP

Обновление в ответ на комментарии: необходим доступ к методу AS400JDBCConnection.getServerJobIdentifier().Затем вам придется переключиться на прокси CGLib (объяснение здесь ).

0 голосов
/ 26 октября 2011

Spring поддерживает развертывание прокси-объекта ComboPooledDataSource. Если вы используете JdbcTemplate, вы можете установить для свойства nativeJdbcExtractor соответствующий объект. Таким образом, любое место, где вы можете получить нативное соединение или даже любой из производных объектов (например, ResultSet), будет нативным.

JavaDoc для интерфейса NativeJdbcExtractor для списка поддерживаемых классов. Это может помочь вам решить, какая реализация работает для вашего приложения.

...