Mam replikowaną pamięć podręczną działającą na wielu węzłach weblogicznych, które również obsługują OSB. Pamięć podręczna jest uruchamiana z serwerem jako klasa startowa. Ma bardzo prosty bufor obiektów, który po prostu śledzi, czy są one używane, czy nie, z atrybutem boolean "dostępny".Koherencja Oracle: jak ustawić limit czasu dla wywołania invoke w replikowanej pamięci podręcznej?
Od OSB wykonuję objaśnienia java do tej samej klasy, która wywołuje "wywołanie" w pamięci podręcznej z procesorem, który oznacza obiekt jako niedostępny, a następnie uruchamia Thread.sleep (31000). Jest to element zastępczy dla długiego przetwarzania, który chcę dodać później.
To, co chcę zrobić, to jeśli wywołanie invoke() trwa zbyt długo, proces powinien przerwać działanie i zwrócić lub wyrzucić wyjątek. Próbowałem przetestować czas oczekiwania na żądanie wynoszący 30000 milisekund. Niestety nie mogę wymyślić, jak sprawić, by ten czas się wydarzył.
Próbowałem:
Owijanie procesor w PriorityProcessor i nazywając setRequestTimeout (30000) przed invoke()
Dodawanie
<request-timeout
> 30000</request-timeout
> do<replicated-scheme/
> elementu w pamięci podręcznej configDodawanie
<tasktimeout
> 30000</tasktimeout
> do<replicated-scheme/
> e lement w config cacheDodawanie
<guardian-timeout
> 30000</guardian-timeout
> do<replicated-scheme/
> element konfiguracji cacheTworzenie firm Tangosol-koherencji-override.xml i dodawania opiekuna-timeout
<init-param
> do<service
> element, którego "typ" pasuje do usługi "nazwa" w konfiguracji z pamięcią podręcznąZmiana wywołania sleep() na Thread.sleep (310000) tylko po to, aby sprawdzić, czy domyślne ustawienie zostanie uruchomione po 5 minuty.
Żadne z powyższych nie powoduje żadnego przekroczenia limitu czasu, procesor po prostu śpi tak długo, jak mu kazałem, a następnie wraca bez błędu.
Czy ktoś wcześniej zrobił coś podobnego i może udzielić mi porady? Byłoby to bardzo docenione.
Dzięki
James