Вызов JDBC getParameterType завершился неудачно - вместо этого используется альтернативный метод весенней связи с Oracle - PullRequest
0 голосов
/ 10 ноября 2019

Я сталкиваюсь с проблемой, так как DEBUG [http-nio-8080-exec-11:org.springframework.jdbc.core.StatementCreatorUtils] - JDBC getParameterType call failed - using fallback method instead: java.sql.SQLException: Unsupported feature это регистрируется и после этого просто зависает.

Вот подробности моего проекта: я использую oracle базу данных и spring-boot приложение с родительским именем:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.7.RELEASE</version>
    <relativePath/>
</parent>

Мой основной файл приложения:

@SpringBootApplication
public class ClientManagementApplication {

    public static void main(String[] args) {
        SpringApplication.run(ClientManagementApplication.class, args);
    }

}

Конфигурация источника данных:

@Configuration
@EnableTransactionManagement
public class DataSourceConfig {
    @Autowired
    private DataSource dataSource;

    @Bean
    public JdbcClientDetailsService jdbcClientDetailsService() {

        //        clients.jdbc(dataSource);
        JdbcClientDetailsService jdbcClientDetailsService =new JdbcClientDetailsService(dataSource);
        jdbcClientDetailsService.setPasswordEncoder(new BCryptPasswordEncoder());

        return jdbcClientDetailsService;
    }
}

Конфигурация веб-секьюрита:

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
    }
}

Класс контроллера:

@RestController
@RequestMapping("/migration")
public class MigrationController {

    private static Logger logger = LoggerFactory.getLogger(MigrationController.class);

    @Autowired
    private MigrationService migrationService;
    @Value("${error.successResponse}")
    private String successResponse;
    @Value("${error.noResultFound}")
    private String noResultFoundError;

    @GetMapping("/testKey")
    public ResponseEntity<?> testKey() {
        migrationService.testAddClient();
        return new ResponseEntity<>(HttpStatus.OK);
    }
}

Выше контроллера совершает вызов MigrationService, который выглядит следующим образом:

@Component
@Transactional
public class MigrationService {
    private static Logger logger = LoggerFactory.getLogger(MigrationService.class);        
    @Autowired
    private Oauth2Service oauth2Service;   
    public void testAddClient(){
oauth2Service.addClient("BajwFFHejN0VF1ff4qBvkxufkx0a","0oBoruZJDDHs1psnp3eHDVHodGMa");
    }
}

Последний класс Oauth2Service, который вставляетв БД:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.oauth2.provider.client.BaseClientDetails;
import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService;
import org.springframework.stereotype.Service;

@Service
public class Oauth2Service {

    @Autowired
    private JdbcClientDetailsService jdbcClientDetailsService;

    public void addClient(String clientId,String clientSecret ) {
        BaseClientDetails clientDetails = new BaseClientDetails(clientId, null, Constants.SCOPE_READ_WRITE, Constants.GRANT_TYPE_ALL, Constants.AUTHORITIES_ROLE);
        clientDetails.setClientSecret(clientSecret);

        jdbcClientDetailsService.addClientDetails(clientDetails);
    }
}

Во время отладки он также зависает, когда я выполняю оператор jdbcClientDetailsService.addClientDetails(clientDetails); из Oauth2Service метода addClient. (Когда из почтальона вызывается /testKey)

Для соединения с БД я использую context.xml, который считывает соединение из пула соединений tomact, определенного в server.xml Когда я получаю данные или извлекаю данные таблицы илиaccess-token работает нормально. (Это определено в других классах)

Но этот конкретный поток не работает и в итоге зависает с сообщением, определенным при запуске. Пожалуйста, предложите, что мне здесь не хватает.

Дайте мне знать, если понадобятся какие-либо дополнительные материалы от меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...