Я использую jboss 5.1.x, EJB3.0
У меня есть MDB, который слушает очередь JMS. когда MDB принимает сообщение, он отправляет сообщение через TCP на какой-либо модем.
иногда этот модем не отвечает, когда сервер ожидает ответа:
byte[] byteData = receive(is);
Потому что я не могу установить тайм-аут на InputStream.
поэтому, благодаря контейнеру EJB, тайм-аут транзакции (который существует по умолчанию) откатывает операцию, а затем повторная попытка выполняется.
у меня этот механизм по умолчанию работает нормально, проблема в следующем:
Иногда транзакция никогда не прекращалась, и по истечении долгого времени я получаю следующее
Сообщение в консоли:
15:18:22,578 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TransactionReaper_18] - TransactionReaper::check timeout for TX a6b2232:5f8:4d3591c6:76 in state RUN
15:18:22,578 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.BasicAction_58] - Abort of action id a6b2232:5f8:4d3591c6:76 invoked while multiple threads active within it.
15:18:22,578 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.CheckedAction_2] - CheckedAction::check - atomic action a6b2232:5f8:4d3591c6:76 aborting with 1 threads active!
15:18:22,578 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TransactionReaper_7] - TransactionReaper::doCancellations worker Thread[Thread-10,5,jboss] successfully canceled TX a6b2232:5f8:4d3591c6:76
Есть идеи, что случилось? и почему иногда это работает, а иногда нет?
спасибо,
луч.