Spring IoC i SpringMVC - dostęp do beanów o zasięgu request z poziomu kolejnego wątku (który powinien być zasięgu request, a Spring traktuje go jak singleton)

0

Witam.

Jak w najnowszej wersji Spring'a uzyskiwać dostęp do beanów - w moim przypadku o zasięgu request - z poziomu kolejnego (nie głównego) wątku?

To:

@Component
 @Scope(value=WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class A{

@Autowired
B bInstance;

[...]

 AsyncTaskExecutor executor = new ConcurrentTaskExecutor();
       executor.execute(bInstance);

i:

@Component
@Scope(value=WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class B{

[...]

 @Autowired
    C cInstance;

[...]

c.jakasMetoda();

Wyrzuca wyjątek:

java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.

Jak to obejść? Na Stackoverflow doradzali dodać do deskryptora wdrożenia listener RequestContextListener, ale to u mnie nie działa.

0
  1. CO chcesz zrobic?
  2. Wydziel algorytm tak aby nie korzystal z requestscope, wymagane dane pobierz z requestScope(watek główny) i przekaz jako parametry do executora
0

No ale jak by to miało niby działać? Jak masz 10 requestów na raz to do którego miałbys mieć dostęp? o_O

1 użytkowników online, w tym zalogowanych: 0, gości: 1