对于 Glassfish 3,为什么 DirectConnectionFactory 在部署我的应用程序时突然给我一个 NullPointerException?

For Glassfish 3, why does DirectConnectionFactory give me a NullPointerException out of the blue when deploying my application?

经过好几个星期的工作,我无法将我的应用程序与 Glassfish 3 部署到我的本地机器上。我得到:

EJB Container initialization error

似乎有一个空指针:

com.sun.messaging.jms.ra.DirectConnectionFactory._createConnectionId(DirectConnectionFactory.java:424)

我偶尔会更改我的应用程序以指向另一台服务器上的 glassfish 实例,并且必须更新正确服务器的设置,但我确信当前配置适合我的本地计算机。

可能是什么导致了这种突然的行为?

一个很可能的解决方案,虽然不是一个立即显而易见的解决方案,就是已经发生了锁定。这通常发生在 IP 地址容易更改的机器上。这是应该针对涉及 DirectConnectionFactory 的错误执行的首批检查之一,并且它是自 Glassfish 2 以来一直沿用的行为(因此此修复程序也可能适用于此)。

您要解决的问题是:

  1. 转到部署应用程序的文件夹(对我来说是 glassfish3\glassfish\domains{MY_APPLICATION})
  2. 寻找imq/instances/imqbroker/lock
  3. 删除那个文件
  4. 重启 glassfish
  5. 再次尝试部署您的应用程序。