手动启用JMS MDB或按延迟时间启动

时间:2017-05-04 13:20:40

标签: jms glassfish-4 openmq

有时在部署Web项目时,我在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队列不为空时才会发生此异常。在部署war时,MDB开始使用java.lang.NoClassDefFoundError异常消息和崩溃,发生此NoClassDefFoundError是因为在glassfish的lookupFromJars中发生了上述异常。

但是,当JMS队列中没有消息时,应用程序成功部署。部署之后,MDB会毫无例外地使用消息。

这是我的问题,如何设置MDB消费者的延迟。例如,在应用程序部署后一分钟后启动MDB。

或者有手动启用MDB的方法吗?

我正在使用glassfish 4.1.1和Openfish的glassfish。

0 个答案:

没有答案