0

我正在使用 NetBeans IDE 开发 Java EE 企业应用程序。我可以在与 NetBeans IDE 捆绑的 Glassfish 实例上开发和测试我的整个应用程序,但是当我尝试在生产 Glassfish 服务器上部署我的应用程序时会遇到一些模糊的错误。每次我尝试在服务器上部署 .ear 包时,Glassfish 都会报这个错误:

SEVERE: Exception while loading the app
SEVERE: Exception while shutting down application container
SEVERE: Exception while shutting down application container : java.lang.NullPointerException
SEVERE: java.lang.RuntimeException: Error occurred during deployment: Exception while shutting down application container : java.lang.NullPointerException. Please see server.log for more details.

该应用程序是在 NetBeans 7.2、Java EE 6、JDK 7 上从头开始开发的,并部署在 GlassFish 3.1.2.2 上。将日志级别更改为 ALL 不会使 GlassFish 产生更有帮助的错误消息。Web 上还提到了其他解决方案,包括创建一个空的 0 字节 beans.xml 文件和使用另一个应用程序服务器,例如 JBoss。我没有尝试 JBoss 或其他应用服务器,但找不到导致 Glassfish 错误的原因。

4

3 回答 3

4

这不是一个普遍的答案,但是当我在没有实现Serializable接口的情况下定义会话范围类时遇到了这个问题。NullPointerException 示例:

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class someBean(){
}

没有NullPointerException 的示例:

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class someBean() implements Serializable{
}

系统环境:Windows x64、jdk x64、glassfish x64。

于 2013-07-19T05:57:46.593 回答
2

如果您的应用程序很好,通常 glassfish 无法干净地取消部署。这当然意味着您之前部署了该特定应用程序。我通常做的是解决这个问题:

  • 停止玻璃鱼
  • 转到您的域和/或实例目录并检查以下目录,如果有类似您的应用程序的名称并将其删除:“应用程序”,“生成”下的所有子文件夹。
  • 删除 osgi 下的 felix 目录(确保不要在安装目录中擦除该目录!)
  • 开始玻璃鱼
  • 部署

如果您正在运行 glassfish 集群,您通常需要在您的 DAS 和您的实例上执行此操作。非常烦人,但这通常只发生在相当多的部署之后。

于 2013-11-17T21:23:25.217 回答
0

奇怪的是,在 64 位 Debian 6 系统上运行的 32 位 JDK 导致了该错误。我已经尝试了所有我能想到的相关和不相关的事情,包括使用相同的 JDK 更新、更改 /etc/hosts 以匹配开发系统、在生产服务器上安装带有捆绑 Glassfish 的 NetBeans(!),使用无效IP地址而不是有效地址,使用Oracle Glassfish服务器而不是社区版本等。它们都没有帮助。只有在我注意到 32 位 JDK 并将其替换为 64 位版本后,问题才得到解决。

这个错误,它模糊的报告和不知何故不相关的原因浪费了我 5 天的时间。我决定分享我的经验,希望它可以帮助处于类似令人沮丧情况的人。

于 2012-09-01T16:54:03.780 回答