У меня есть реплицированный кеш, работающий на нескольких узлах weblogic, на которых также работает OSB. Кэш запускается с сервером в качестве класса запуска. Он имеет очень простой кэш объектов, которые просто отслеживают, используются ли они или нет, с логическим атрибутом «доступен».
Из OSB я делаю вызовы java для того же класса, который вызывает «вызов» в кеше с процессором, который помечает объект как недоступный, а затем запускает Thread.sleep(31000). Это заполнитель для длительной обработки, которую я хочу добавить позже.
Что я хочу, так это то, что если вызов invoke() занимает слишком много времени, процесс должен истечь по времени и вернуть или выдать исключение. Поэтому я пытался настроить тайм-аут запроса в 30000 миллисекунд, чтобы проверить это. К сожалению, я не могу понять, как сделать этот тайм-аут.
Я пытался:
Обертывание процессора в PriorityProcessor и вызов setRequestTimeout(30000) перед вызовом()
Добавление
<request-timeout
>30000</request-timeout
> к элементу<replicated-scheme/
> в конфигурации кешаДобавление
<tasktimeout
>30000</tasktimeout
> к элементу<replicated-scheme/
> в конфигурации кешаДобавление
<guardian-timeout
>30000</guardian-timeout
> к элементу<replicated-scheme/
> в конфигурации кешаСоздание tangosol-coherence-override.xml и добавление тайм-аута guardian-timeout
<init-param
> к элементу<service
>, «тип» которого соответствует «имени» службы в конфигурации кеша.Изменение вызова sleep() на Thread.sleep(310000) просто для того, чтобы посмотреть, не сработает ли какое-либо стандартное значение по умолчанию через 5 минут.
Ни один из них не приводит к тайм-ауту, процессор просто спит столько, сколько я сказал, а затем возвращается без ошибок.
Кто-нибудь делал что-то подобное раньше и может дать мне несколько советов? Это было бы очень признательно.
Спасибо
Джеймс