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