8

我正在将我的应用程序从GlassFish 3.0.1迁移到GlassFish 3.1.1。部署失败,并显示以下错误消息:“没有堆栈跟踪时加载应用程序时出现异常”

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. 

没有堆栈跟踪。我打开根日志记录级别为FINEST和焊缝消息后发生的第一严重的消息:

//... 
FINE: WELD-000105 Enabled interceptor types for Manager 
Enabled alternatives: [] [] 
Registered contexts: [interface javax.enterprise.context.SessionScoped, interface javax.enterprise.context.RequestScoped, interface javax.inject.Singleton, interface javax.enterprise.context.Dependent, interface javax.enterprise.context.ApplicationScoped, interface javax.enterprise.context.ConversationScoped] 
Registered beans: 0 
Specialized beans: 0 
: [] 

而之前像这样的几个消息(几个不同的类):

FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/org/jboss/seam/transaction/SeamTransaction.class 
FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/org/jboss/seam/transaction/SeamTransaction.class 
FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/net/sf/ehcache/config/TerracottaConfiguration$ValueMode.class 
//... 

有什么事情引起这个错误?这些PWC4451消息是否表明某些库没有被加载?

+0

这看起来好像无处可去。如果任何开发工具程序员看到这一点,请记住:良好的错误消息是一个功能! – Nick

+2

这实际上被标记为Glassfish问题,应该在Glassfish 4.0中修复,以解决该问题。请参阅http://java.net/jira/browse/GLASSFISH-18599,不幸的是,这无助于你或我现在。 –

回答

6

这是由于@ViewScoped bean没有实现Serializable。显然,我们使用的Weld的旧版本并没有发现钝化范围的bean不是Serializable,但是由于它的存在,这个失败了。哦,希望这能节省一些时间。

+1

你已经钉了它! – Matyas

3

3小时调试后,我固定一个问题像这样的尝试部署像焊接多条错误消息似乎在JBoss中6

申请没有得到Glassfish的下正确记录。在我的情况下,我使用@Stateless @RequestScoped注释了一个EJB(这是非法的,必须是@Statefull)。 对于Glassfish,我只能看到“加载应用程序时出错”,而在JBoss 6中,我得到了正确的错误消息,指出了违规代码。

我建议你尝试在JBoss 6上部署所有部分(例如@Resource,具有特定的JNDI路径),以防止Weld部署人员扫描应用程序并验证CDI内容。

+0

感谢您的建议,我会考虑在JBoss上运行我的应用程序。你知道这个bug是否已经报告给Seam/GlassFish人? – Nick

2

在我的情况下,问题是我的beans.xml由空的“beans”元素组成,它曾经工作但显然不再存在。当我用一个完全空的0字节beans.xml替换它时,它工作正常。

+0

这解决了我的问题!谢谢......在我试过之前会花费很长时间*) –

2

当添加一个在Glassfish 3.1.2.2中不可序列化的拦截器时,我遇到了同样的问题。刚刚得到NullPointerException没有任何进一步的解释。

当我拦截器执行Serializable时,它工作正常。

1

原因和解决方案我也遇到过关于这个问题:
- 没有更新的目标(确保做一个maven干净,目标文件夹可能会被锁定,请尝试手动删除它并重建你的耳朵(有几个这个问题次)
- JDBC池的问题:刷新它们
- EJB的构造函数问题(注意它是创建bean的容器):容器需要能够启动它们,因此没有参数的默认构造函数必须是目前

如果不起作用: 团队 - >比较 - >最新工作版本并将每个EJB bean或DTO视为Web服务的可能原因。评论您的更改并重试部署以查找问题。

以任何方式它是一个讨厌的错误:(祝你好运!

0

就我而言,本着拦截者的精神,我很容易找到,因为我在那里玩耍。

我在拦截器上添加了无辜的@Interceptor,即使我将它与注释一起使用。

我的版本的玻璃鱼是3.1.2.2。

这个页面说它是可选的Inteceptor Javadoc

相关问题