You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The examples you provided work perfectly when I use the RestClient from a Controller.
I am encountering an issue when attempting to make HTTP requests using the RestClient within a CronService that is annotated with @Scheduled. The goal is to periodically call an external service that requires OAuth2 authentication. However, the execution of the scheduled task results in an IllegalArgumentException, specifically stating that the servletRequest cannot be null.
java.lang.IllegalArgumentException: servletRequest cannot be null
at org.springframework.util.Assert.notNull(Assert.java:172)
at org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager.authorize(DefaultOAuth2AuthorizedClientManager.java:144)
at xx.xxx.xxxx.xxxxxxx.xxxxxxx.service.CronService.performMyTask(CronService.java:95)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130)
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124)
at io.micrometer.observation.Observation.observe(Observation.java:499)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:96)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Could you include an example when a web request context is not available?
The text was updated successfully, but these errors were encountered:
Yes, I came across the issue first, and then found your PoC, which was really helpful. It looks like we are facing similar issues with the RestClient and OAuth configuration. Thank you for sharing your work.
The examples you provided work perfectly when I use the RestClient from a Controller.
I am encountering an issue when attempting to make HTTP requests using the RestClient within a CronService that is annotated with
@Scheduled
. The goal is to periodically call an external service that requires OAuth2 authentication. However, the execution of the scheduled task results in an IllegalArgumentException, specifically stating that the servletRequest cannot be null.Could you include an example when a web request context is not available?
The text was updated successfully, but these errors were encountered: