Witam.
Mam problem i nie mogę znaleźć rozwiązania.
Otóż dostaje requesta do kontrolera który powoduje rozpoczęcie wykonywania pewnej funkcji, a w niej wykonuje zapytanie do bazy i w zależności od tego jak długo się kręci zapytanie musze zwrócić dane z bazy lub informację o timeoucie.
Czy jest możliwość wykonania tego zapytania i zwrócenia wyników tak by zapytanie do bazy nie było wysyłane z oddzielnego wątku?
Rozwiązanie dostarczone przez ExecutorService odpada, gdyż jest tworzony nowy wątek z którego nie mogę dostać się do bazy.
Wpadłem na pomysł by przed wysłaniem zapytania odpalić wątek z odmierzaniem czasu ale po jego upływie i tak nie zwrócę timeouta, a zwrócenie czegokolwiek może odbyć się dopiero po wykonaniu zapytania na bazie. Myślałem też o tworzeniu Labelek i w wątku odmierzającym czas postawić break label; ale blok labelki jest na zewnątrz watku, wiec label jest dla tego watka niewidoczny.
Myślałem by rzucić wyjątek z wątku odmierzania czasu i w parencie go przechwycić ale jak wiecie to też jest nie możliwe.
Czy jest możliwość zastopowania wykonywania funkcji gdy wykonuje się zbyt długo i zwrócenia z niej wartości?Jakieś pomysły?
- Rejestracja:ponad 13 lat
- Ostatnio:prawie 11 lat
- Postów:25
- Rejestracja:ponad 11 lat
- Ostatnio:prawie 10 lat
- Postów:110
A co powstrzymuje Cie od wykonania zapytania w osobnym watku?
- Rejestracja:ponad 11 lat
- Ostatnio:prawie 10 lat
- Postów:110
Nadal nie rozumiem dlaczego nie mozesz wykonac zapytania w osobnym watku. Mozesz przyblizyc swoje nieudane proby z ExecutorService?
- Rejestracja:ponad 13 lat
- Ostatnio:prawie 11 lat
- Postów:25
jezeli bede wykonywac zadanie przy uzyciu ExecutorService to z automatu zadanie wykjonuje się w nowym watku.
To z kolei tworzy wyjatki i brak odczytu z bazy.
Rozumiem ze nie ma takiego rozwiazania poza wykonaniem w nowym watku, ktore mi nie pasuje

- Rejestracja:ponad 18 lat
- Ostatnio:ponad 9 lat
- Postów:1019
Jeżeli do transakcji używasz Springa, to anotacja Transactional ma atrybut timeout.
Sterownik jdbc musi jednak obsługiwać java.sql.Statement.setQueryTimeout.
http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/transaction/annotation/Transactional.html#timeout%28%29
http://www.cubrid.org/blog/dev-platform/understanding-jdbc-internals-and-timeout-configuration/
http://docs.oracle.com/javaee/6/tutorial/doc/bncjc.html#gentextid-29581
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
wojciech.kudla