我正在使用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错误的原因。
答案 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群集,通常需要在DAS和实例上执行此操作。非常烦人,但这通常只发生在相当多的部署之后。
答案 2 :(得分:0)
奇怪的是,在64位Debian 6系统上运行的32位JDK导致了错误。我已经尝试了所有可能的相关和不相关的事情,包括使用相同的JDK更新,更改/ etc / hosts以匹配开发系统,在生产服务器(!)上使用捆绑的Glassfish安装NetBeans,使用无效IP地址而不是有效的IP地址,使用Oracle Glassfish服务器而不是社区版本等。它们都没有帮助。只有在我注意到32位JDK并将其替换为64位版本后才能解决问题。
错误,其模糊的报道以及某种不相关的原因浪费了我5天的时间。我决定分享我的经验,希望它可以帮助处于类似令人沮丧情况的人。