2010-03-16 8 views
2

У меня возникла следующая проблема при развертывании моего приложения.Message Driven Bean с Java Message Queue down

Он использует JMS и удаленный openMQ для связи между серверами. Проблема в том, что соединение не полностью надежное, поэтому оно может быть вверх или вниз. Для повторного подключения я установил свойство rems для пересоединения jms, чтобы он снова подключался, если в какой-то момент соединение теряется. Проблема возникает, когда я пытаюсь развернуть приложение, и соединение отсутствует. Похоже, что он продолжает повторять соединение, но приложение не завершает развертывание до тех пор, пока соединение не будет доступно.

Можно ли настроить его каким-либо образом, чтобы развертывание продолжалось, даже если соединение отсутствует, и продолжает повторять попытку до тех пор, пока не будет доступно соединение?

Большое спасибо.

Редактировать: Я пытаюсь запустить инициализацию MDB в другом потоке. Я пытался как

Я пытаюсь назначить другую нить к MDB двумя способами изменения Солнце-ejb.jar.xml

 <bean-pool> 
      <steady-pool-size>1</steady-pool-size> 
      <resize-quantity>1</resize-quantity> 
      <max-pool-size>1</max-pool-size> 
      <pool-idle-timeout-in-seconds>60</pool-idle-timeout-in-seconds> 
     </bean-pool> 

, а также с

 <use-thread-pool-id>a-new-thread-pool</use-thread-pool-id> 

Но у меня было не повезло. Похоже, что это ждет завершения этой темы, поскольку похоже, что она получает новый поток, но ожидает, что этот поток закончится, чтобы закончить запуск приложения, поэтому в моем случае приложение не будет развернуто правильно.

Редактировать 2 Я попытался запустить JMS службу в другом потоке также ...

asadmin create-resource-adapter-config --threadpools a-new-thread-pool jmsra 

Не повезло также.

+0

Грубое предположение: попытаться установить мин-бассейн-размер до нуля. Может быть, это помогает. – ewernli

+0

Я пробовал, но, похоже, не имел эффекта. Вероятно, он пытается зарегистрироваться в очереди, но я не могу быть уверен ... –

ответ

1

С помощью стандартного JMS-провайдера по умолчанию не удается. Я, наконец, удалось сделать это, изменив JCA адаптер

https://jmsjca.dev.java.net/

0

Можете ли вы подумать о том, чтобы создать отдельный поток, который подключается к JMS, так что основные приложения продолжают работать без блокировки.

+0

Похоже, хорошая идея. Я не могу создать нить самостоятельно, так как я в J2EE, но Glassfish дает некоторые возможности. Во всяком случае, это все еще не работает. Я редактировал вопрос. –