1
-
时产生的异常使用NetBeans 7在GlassFish 3.1
- 启动一个新的Web应用程序
- 在的index.xhtml身上带有字符串添加一个
h:outputText
标签与value="#{myBean.message}"
- 创建
SessionScoped
ManagedBean
MyBean
财产message
;创建getter和setter;使其实现Serializable
- 创建
Stateless
SessionBean
和使用@EJB
注释 - 从这点上来说,只要更改Java代码并保存该项目将其注入
MyBean
,你会得到很多错误(NPE,IO错误,EJB的错误)在取消部署期间。部署很好,应用程序运行良好。但是我想避免在取消部署期间的例外情况。
这是正常的吗?或者我做错了什么?注入EJB到SessionScoped ManagedBean取消部署
这里我的代码:
的index.xhtml(身体的一部分)
<h:body>
<h:outputText value="#{myBean.message}"></h:outputText>
</h:body>
MyBean.Java
@ManagedBean
@SessionScoped
public class MyBean implements Serializable {
@EJB NewSessionBean nsb;
public String getMessage() {
return " " + nsb.toString();
}
public MyBean() {
}
}
NewSessionBean.java
@Stateless
@LocalBean
public class NewSessionBean {
}
为了获取错误,只需加载网页,在消息字符串中添加空格,保存java文件(自动部署已切换,否则手动重新部署)。
一些例外
EJB5014: Exception resolving object
java.lang.NullPointerException at
com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate$SerializableLocalObjectDelegate.createObject(EJBLocalObjectInvocationHandlerDelegate.java:158)
IOException while loading persisted sessions: java.io.IOException
java.io.IOException
at com.sun.ejb.base.io.EJBObjectInputStream.resolveObject(EJBObjectInputStream.java:114)
UPDATE
如果我Named
更换ManagedBean
注解,因此使用CDI
,因此更换javax.faces.bean.SessionScoped
与javax.enterprise.context.SessionScoped
,我有完全一样的取消部署时的问题,以及后缀折runs流畅。
抛出的异常与以前完全一样。
你为什么使用*** @ SessionScoped ***?这是绝对必要的吗? – Lion 2011-12-30 13:33:28
@Lion呃,这里没有什么是绝对必要的,还有其他方法可以实现我们的目标。但在这种情况下,“会话”是豆的正确范围......顺便说一句:只有SessionScoped抛出异常,而不是其他的作用域。 – perissf 2011-12-30 13:36:35