Я сталкиваюсь с проблемой, так как 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
работает нормально. (Это определено в других классах)
Но этот конкретный поток не работает и в итоге зависает с сообщением, определенным при запуске. Пожалуйста, предложите, что мне здесь не хватает.
Дайте мне знать, если понадобятся какие-либо дополнительные материалы от меня.