有时在部署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。