Обработка метода EJB зависает где-то во время выполнения - PullRequest
1 голос
/ 21 июля 2011

У меня странная проблема, вот краткий снимок системы: у меня есть веб-приложение, которое вызывает локальный EJB-компонент, позволяет вызывать локальный EJB «LocalEJB», этот EJB вызывает удаленный EJB - метод «RemoteEJB», который выполняет некоторая обработка во внешней системе и возвращает результат String. Все происходит в Weblogic 8.1

Вот пример обработки:

Веб-приложение:

//create reference to the local bean  
locHome = (LocalHome)ServiceLocator.getInstance().getLocalHome("ejb/localejb");

beanRef = locHome.create();  //call the bean method  
String result = beanRef.updateSmth(data.getId(),data.getRelatedIds(),Integer.valueOf(data.getState()));

//print the result  
LOG.debug("result is: " + result);

У меня включено ведение журнала на локальном компоненте внутри приложения ejb:

log.debug("state " + state);

res = session.updateSmth(id, relatedIds, state);

log.debug("result inside bean call: " + res);

Где 'сессия' является ссылкой на удаленный компонент.

Теперь, что происходит, запрос приходит к приложению, выполняется метод 'beanRef.updateSmth', который вызывает метод внутри локального ejb, через секунду или две, которые я вижу в файле журнала, например, для. 'result inside call bean: 0231423', что означает, что удаленный bean-компонент возвратил результат, но мне иногда приходится ждать 5-6 минут, пока я не увижу результат в моем веб-приложении (оператор LOG.debug ("result is:" + результат);'). Что занимает так много времени, чтобы передать результаты веб-приложению, это фиксация транзакции (локальный компонент имеет значение «Требуется»)?

Я вижу в файле XML weblogic config, что тайм-аут транзакции установлен на 1800 секунд, но действительно ли имеет значение, готовы ли результаты сразу же вернуться?

1 Ответ

2 голосов
/ 16 августа 2011

Как и ожидалось, это было вызвано контейнером, ожидающим совершения транзакции. Запись базы данных была заблокирована, и контейнер не смог зафиксировать транзакцию, что привело к истечению времени ожидания в конце.

...