Как вызвать REST API типа предоставления пароля OAuth2 из Spring Boot с использованием oauth2-client ⇐ JAVA
Как вызвать REST API типа предоставления пароля OAuth2 из Spring Boot с использованием oauth2-client
Я пытаюсь создать простое приложение Spring Boot для запроса стороннего Rest API и записи тела ответа на консоль. Остальные API защищены типом предоставления пароля OAuth2.
Я могу получить access_token с помощью Postman по URL-адресу токена с помощью POST-запроса с client_id, client_secret, именем пользователя, паролем иgrant_type=password в теле x-www-form-urlencoded.
Если впоследствии я использую этот токен в качестве токена-носителя с запросом GET по URL-адресу ресурса, я получаю ожидаемый JSON.
Мое приложение Spring выглядит следующим образом:
@SpringBootApplication общественный класс CraPocApplication { public static void main(String[] args) { SpringApplication.run(CraPocApplication.class, args); } @Бин public CommandLineRunner run (WebClient webClient) { вернуть аргументы -> { Тело строки = webClient.get() .uri("https://api.iot.cra.cz/cxf/api/v1/projects") .attributes(ServerOAuth2AuthorizedClientExchangeFilterFunction.clientRegistrationId("custom-client")) .забрать() .bodyToMono(String.class) .блокировать(); System.out.println(тело); }; } @Бин WebClient webClient (ReactiveOAuth2AuthorizedClientManagerauthorizedClientManager) { ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2 = новый ServerOAuth2AuthorizedClientExchangeFilterFunction (authorizedClientManager); вернуть WebClient.builder() .filter(oauth2) .строить(); } } Конфигурация клиента находится здесь:
@Configuration общественный класс OAuth2ClientConfig { @Бин public ReactiveOAuth2AuthorizedClientManager AuthorizedClientManager( ReactiveClientRegistrationRepository clientRegistrationRepository, ServerOAuth2AuthorizedClientRepositoryauthorizedClientRepository) { ReactiveOAuth2AuthorizedClientProvider AuthorizedClientProvider = ReactiveOAuth2AuthorizedClientProviderBuilder.builder() .Код авторизации() .refreshToken() .clientCredentials() .пароль() .строить(); DefaultReactiveOAuth2AuthorizedClientManager AuthorizedClientManager = новый DefaultReactiveOAuth2AuthorizedClientManager( clientRegistrationRepository, авторизованныйClientRepository); авторизованныйClientManager.setAuthorizedClientProvider(authorizedClientProvider); вернуть авторизованныйClientManager; } } и файл application.yaml
весна: безопасность: оаут2: клиент: Регистрация: индивидуальный клиент: идентификатор клиента: iot-api-client секрет клиента: MY_CLIENT_SECRET тип разрешения-авторизации: пароль имя пользователя: MY_USERNAME пароль: МОЙ_ПАРОЛЬ объем: читать поставщик: индивидуальный клиент: токен-uri: https://sso.cra.cz/auth/realms/CRA/prot ... nect/token При запуске приложения я получаю следующую трассировку
Ошибка запуска ApplicationContext. Чтобы отобразить отчет об оценке состояния, повторно запустите приложение с включенной «отладкой». 2024-01-05T11:13:13.362+01:00 ОШИБКА 67668 --- [restartedMain] o.s.boot.SpringApplication: Ошибка запуска приложения java.lang.IllegalArgumentException: serverWebExchange не может иметь значение null в org.springframework.security.oauth2.client.web.DefaultReactiveOAuth2AuthorizedClientManager.lambda$authorize$4(DefaultReactiveOAuth2AuthorizedClientManager.java:153) ~[spring-security-oauth2-client-6.2.1.jar:6.2.1] Подавлено: реактор.core.publisher.FluxOnAssembly$OnAssemblyException: Ошибка наблюдалась на следующих сайтах: *__checkpoint ⇢ Запрос GET https://api.iot.cra.cz/cxf/api/v1/projects [DefaultWebClient] Исходная трассировка стека: в org.springframework.security.oauth2.client.web.DefaultReactiveOAuth2AuthorizedClientManager.lambda$authorize$4(DefaultReactiveOAuth2AuthorizedClientManager.java:153) ~[spring-security-oauth2-client-6.2.1.jar:6.2.1] в реакторе.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:85) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$ScalarSubscription.request(Operators.java:2573) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.request(FluxFilter.java:186) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.onSubscribe(FluxFilter.java:85) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:297) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:478) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$BaseFluxToMonoOperator.completePossibleEmpty(Operators.java:2097) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:134) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:85) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$ScalarSubscription.request(Operators.java:2573) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.request(FluxFilter.java:186) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.onSubscribe(FluxFilter.java:85) ~[реактор-ядро-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoZip$ZipCoordinator.request(MonoZip.java:220) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoZip.subscribe(MonoZip.java:129) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.block(Mono.java:1727) ~[reactor-core-3.6.1.jar:3.6.1] в cz.tsb.crapoc.CraPocApplication.lambda$run$0(CraPocApplication.java:29) ~[classes/:na] в org.springframework.boot.SpringApplication.lambda$callRunner$5(SpringApplication.java:798) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:806) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:797) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:782) ~[spring-boot-3.2.1.jar:3.2.1] в java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na] в java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na] в java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na] в java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] в java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:na] в java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na] в java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] в java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na] в org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:782) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[весна-загрузка-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1358) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1347) ~[spring-boot-3.2.1.jar:3.2.1] в cz.tsb.crapoc.CraPocApplication.main(CraPocApplication.java:18) ~[classes/:na] в java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] в java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] в org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.2.1.jar:3.2.1] Подавлено: java.lang.Exception: #block завершен с ошибкой в реакторе.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:103) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.block(Mono.java:1728) ~[reactor-core-3.6.1.jar:3.6.1] в cz.tsb.crapoc.CraPocApplication.lambda$run$0(CraPocApplication.java:29) ~[classes/:na] в org.springframework.boot.SpringApplication.lambda$callRunner$5(SpringApplication.java:798) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:806) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:797) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:782) ~[spring-boot-3.2.1.jar:3.2.1] в java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na] в java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na] в java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na] в java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] в java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:na] в java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na] в java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] в java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na] в org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:782) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1358) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1347) ~[spring-boot-3.2.1.jar:3.2.1] в cz.tsb.crapoc.CraPocApplication.main(CraPocApplication.java:18) ~[classes/:na] в java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] в java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] в org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.2.1.jar:3.2.1] Однако я не могу найти в стеке ничего полезного.
Кто-нибудь может помочь?
Я пытаюсь создать простое приложение Spring Boot для запроса стороннего Rest API и записи тела ответа на консоль. Остальные API защищены типом предоставления пароля OAuth2.
Я могу получить access_token с помощью Postman по URL-адресу токена с помощью POST-запроса с client_id, client_secret, именем пользователя, паролем иgrant_type=password в теле x-www-form-urlencoded.
Если впоследствии я использую этот токен в качестве токена-носителя с запросом GET по URL-адресу ресурса, я получаю ожидаемый JSON.
Мое приложение Spring выглядит следующим образом:
@SpringBootApplication общественный класс CraPocApplication { public static void main(String[] args) { SpringApplication.run(CraPocApplication.class, args); } @Бин public CommandLineRunner run (WebClient webClient) { вернуть аргументы -> { Тело строки = webClient.get() .uri("https://api.iot.cra.cz/cxf/api/v1/projects") .attributes(ServerOAuth2AuthorizedClientExchangeFilterFunction.clientRegistrationId("custom-client")) .забрать() .bodyToMono(String.class) .блокировать(); System.out.println(тело); }; } @Бин WebClient webClient (ReactiveOAuth2AuthorizedClientManagerauthorizedClientManager) { ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2 = новый ServerOAuth2AuthorizedClientExchangeFilterFunction (authorizedClientManager); вернуть WebClient.builder() .filter(oauth2) .строить(); } } Конфигурация клиента находится здесь:
@Configuration общественный класс OAuth2ClientConfig { @Бин public ReactiveOAuth2AuthorizedClientManager AuthorizedClientManager( ReactiveClientRegistrationRepository clientRegistrationRepository, ServerOAuth2AuthorizedClientRepositoryauthorizedClientRepository) { ReactiveOAuth2AuthorizedClientProvider AuthorizedClientProvider = ReactiveOAuth2AuthorizedClientProviderBuilder.builder() .Код авторизации() .refreshToken() .clientCredentials() .пароль() .строить(); DefaultReactiveOAuth2AuthorizedClientManager AuthorizedClientManager = новый DefaultReactiveOAuth2AuthorizedClientManager( clientRegistrationRepository, авторизованныйClientRepository); авторизованныйClientManager.setAuthorizedClientProvider(authorizedClientProvider); вернуть авторизованныйClientManager; } } и файл application.yaml
весна: безопасность: оаут2: клиент: Регистрация: индивидуальный клиент: идентификатор клиента: iot-api-client секрет клиента: MY_CLIENT_SECRET тип разрешения-авторизации: пароль имя пользователя: MY_USERNAME пароль: МОЙ_ПАРОЛЬ объем: читать поставщик: индивидуальный клиент: токен-uri: https://sso.cra.cz/auth/realms/CRA/prot ... nect/token При запуске приложения я получаю следующую трассировку
Ошибка запуска ApplicationContext. Чтобы отобразить отчет об оценке состояния, повторно запустите приложение с включенной «отладкой». 2024-01-05T11:13:13.362+01:00 ОШИБКА 67668 --- [restartedMain] o.s.boot.SpringApplication: Ошибка запуска приложения java.lang.IllegalArgumentException: serverWebExchange не может иметь значение null в org.springframework.security.oauth2.client.web.DefaultReactiveOAuth2AuthorizedClientManager.lambda$authorize$4(DefaultReactiveOAuth2AuthorizedClientManager.java:153) ~[spring-security-oauth2-client-6.2.1.jar:6.2.1] Подавлено: реактор.core.publisher.FluxOnAssembly$OnAssemblyException: Ошибка наблюдалась на следующих сайтах: *__checkpoint ⇢ Запрос GET https://api.iot.cra.cz/cxf/api/v1/projects [DefaultWebClient] Исходная трассировка стека: в org.springframework.security.oauth2.client.web.DefaultReactiveOAuth2AuthorizedClientManager.lambda$authorize$4(DefaultReactiveOAuth2AuthorizedClientManager.java:153) ~[spring-security-oauth2-client-6.2.1.jar:6.2.1] в реакторе.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:85) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$ScalarSubscription.request(Operators.java:2573) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.request(FluxFilter.java:186) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.onSubscribe(FluxFilter.java:85) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:297) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:478) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$BaseFluxToMonoOperator.completePossibleEmpty(Operators.java:2097) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:134) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:85) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$ScalarSubscription.request(Operators.java:2573) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.request(FluxFilter.java:186) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxFilter$FilterSubscriber.onSubscribe(FluxFilter.java:85) ~[реактор-ядро-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoZip$ZipCoordinator.request(MonoZip.java:220) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoZip.subscribe(MonoZip.java:129) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Operators.complete(Operators.java:137) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.block(Mono.java:1727) ~[reactor-core-3.6.1.jar:3.6.1] в cz.tsb.crapoc.CraPocApplication.lambda$run$0(CraPocApplication.java:29) ~[classes/:na] в org.springframework.boot.SpringApplication.lambda$callRunner$5(SpringApplication.java:798) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:806) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:797) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:782) ~[spring-boot-3.2.1.jar:3.2.1] в java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na] в java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na] в java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na] в java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] в java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:na] в java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na] в java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] в java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na] в org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:782) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[весна-загрузка-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1358) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1347) ~[spring-boot-3.2.1.jar:3.2.1] в cz.tsb.crapoc.CraPocApplication.main(CraPocApplication.java:18) ~[classes/:na] в java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] в java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] в org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.2.1.jar:3.2.1] Подавлено: java.lang.Exception: #block завершен с ошибкой в реакторе.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:103) ~[reactor-core-3.6.1.jar:3.6.1] в реакторе.core.publisher.Mono.block(Mono.java:1728) ~[reactor-core-3.6.1.jar:3.6.1] в cz.tsb.crapoc.CraPocApplication.lambda$run$0(CraPocApplication.java:29) ~[classes/:na] в org.springframework.boot.SpringApplication.lambda$callRunner$5(SpringApplication.java:798) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[spring-core-6.1.2.jar:6.1.2] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:806) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:797) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:782) ~[spring-boot-3.2.1.jar:3.2.1] в java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na] в java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na] в java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na] в java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] в java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:na] в java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na] в java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] в java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na] в org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:782) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1358) ~[spring-boot-3.2.1.jar:3.2.1] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1347) ~[spring-boot-3.2.1.jar:3.2.1] в cz.tsb.crapoc.CraPocApplication.main(CraPocApplication.java:18) ~[classes/:na] в java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] в java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] в org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.2.1.jar:3.2.1] Однако я не могу найти в стеке ничего полезного.
Кто-нибудь может помочь?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Microsoft Fabric REST API — как вызвать REST API без предоставления доступа к Workspace
Anonymous » » в форуме Python - 0 Ответы
- 37 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Microsoft Fabric REST API — как вызвать REST API без предоставления доступа к Workspace
Anonymous » » в форуме Python - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Microsoft Fabric REST API — как вызвать REST API без предоставления доступа к Workspace
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Microsoft Fabric REST API — как вызвать REST API без предоставления доступа к Workspace
Anonymous » » в форуме Python - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-