Java Glassfish部署错误,包含非信息性错误消息

Java Glassfish部署错误,包含非信息性错误消息,java,deployment,java-ee-6,glassfish-3,netbeans-7,Java,Deployment,Java Ee 6,Glassfish 3,Netbeans 7,我正在使用NetBeans IDE开发一个JavaEE企业应用程序。我可以在与NetBeans IDE捆绑在一起的Glassfish实例上开发和测试我的整个应用程序,但是当我尝试在生产Glassfish服务器上部署我的应用程序时,我会遇到一些模糊的错误。每次我尝试在服务器上部署.ear包时,Glassfish都会报告以下错误: SEVERE: Exception while loading the app SEVERE: Exception while shutting down applica

我正在使用NetBeans IDE开发一个JavaEE企业应用程序。我可以在与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.

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

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


这个错误,它含糊不清的报告和某种不相关的原因浪费了我5天的时间。我决定与大家分享我的经验,希望它能帮助处于类似沮丧境地的人。

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


这个错误,它含糊不清的报告和某种不相关的原因浪费了我5天的时间。我决定与大家分享我的经验,希望它能帮助处于类似沮丧状况的人。

这不是一个通用的答案,但在定义会话作用域类而不实现接口时,我会遇到这个问题。 NullPointerException示例:

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

@Named
@SessionScoped
public class someBean(){
}
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class someBean() implements Serializable{
}
不带NullPointerException的示例

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

@Named
@SessionScoped
public class someBean(){
}
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class someBean() implements Serializable{
}
系统环境
Windows x64、jdk x64、glassfish x64。

这不是一个通用的答案,但我在定义会话作用域类而不实现接口时遇到了这个问题。 NullPointerException示例:

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

@Named
@SessionScoped
public class someBean(){
}
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class someBean() implements Serializable{
}
不带NullPointerException的示例

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

@Named
@SessionScoped
public class someBean(){
}
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class someBean() implements Serializable{
}
系统环境
Windows x64、jdk x64、glassfish x64。

如果您的应用程序正常,glassfish通常无法干净地取消部署某些内容。这当然意味着您以前部署过该特定应用程序。我通常要做的是:

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

在运行glassfish集群的情况下,通常需要在DAS和实例上执行此操作。非常烦人,但这通常只发生在多次部署之后。

如果你的应用程序正常,glassfish通常无法干净地取消部署。这当然意味着您以前部署过该特定应用程序。我通常要做的是:

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

在运行glassfish集群的情况下,通常需要在DAS和实例上执行此操作。非常烦人,但这通常只发生在多次部署之后。

这只是一个可能的原因。在64位Centos上运行64位JDK时,我遇到了同样的错误。而且它过去是有用的。我突然犯了这个错误。这只是一个可能的原因。在64位Centos上运行64位JDK时,我遇到了同样的错误。而且它过去是有用的。我突然遇到了这个错误。当我的server.log指示Glassfish JDBC resources/JNDI名称不正确时,我收到了这个错误。当我的server.log指示Glassfish JDBC resources/JNDI名称不正确时,我收到了这个错误。这就是我的问题所在。部署/取消部署失败使该特定应用无法工作。这就是我的问题所在。部署/取消部署失败使该特定应用无法工作。你解决了我的问题。似乎是玻璃鱼的问题。范围不重要,你解决了我的问题。似乎是玻璃鱼的问题。范围并不重要。