Включение 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.