Glassfish部署错误与无法提供信息的错误消息

时间:2012-09-01 16:54:04

标签: java deployment java-ee-6 glassfish-3 netbeans-7

我正在使用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错误的原因。

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:2)

如果你的应用程序没问题,通常玻璃鱼不能干净地取消部署。这当然意味着您之前部署了该特定应用程序。我通常采取的措施是:

  • 停止glassfish
  • 转到您的域和/或实例目录并查看以下目录,如果有任何名称与您的应用程序相同并删除它:'application','generated'下的所有子文件夹。
  • 删除osgi下的felix目录(确保不要在安装目录中擦除该目录!)
  • 启动glassfish
  • 部署

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

答案 2 :(得分:0)

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

错误,其模糊的报道以及某种不相关的原因浪费了我5天的时间。我决定分享我的经验,希望它可以帮助处于类似令人沮丧情况的人。