Включение JMS MDB вручную или запуск по времени задержки

Иногда у меня есть исключения ниже в журнале Glassfish при развертывании веб-проекта

java.lang.NullPointerException
  at org.apache.naming.resources.WebDirContext.lookupFromJars(WebDirContext.java:325)
  at org.apache.naming.resources.WebDirContext.getAttributes(WebDirContext.java:298)
  at org.apache.naming.resources.BaseDirContext.getAttributes(BaseDirContext.java:787)
  at org.apache.naming.resources.ProxyDirContext.cacheLoad(ProxyDirContext.java:1533)
  at org.apache.naming.resources.ProxyDirContext.cacheLookup(ProxyDirContext.java:1456)
  at org.apache.naming.resources.ProxyDirContext.lookup(ProxyDirContext.java:274)
  at org.glassfish.web.loader.WebappClassLoader.findResourceInternalFromRepositories(WebappClassLoader.java:2892)

Оказалось, это известная ошибка стеклянной рыбы https://java.net/jira/browse/GLASSFISH-21522

В моем случае я заметил, что это исключение возникает только тогда, когда очередь JMS не пуста. При развертывании войны MDB начинает потреблять сообщения и вылетает из-за исключения java.lang.NoClassDefFoundError, это NoClassDefFoundError происходит из-за возникновения исключения в lookupFromJars для glassfish.

Но, когда в очереди JMS нет сообщений, приложение успешно развертывается. После развертывания MDB принимает сообщения без каких-либо исключений.

Вот мой вопрос, как я могу установить задержку для потребителя MDB. Например, запустить MDB через минуту после развертывания приложения.

Или есть способ включить MDB вручную?

Я использую Glassfish 4.1.1 и OpenMQ Glassfish.

0 ответов

Другие вопросы по тегам