我在使用Java 7的GlassFish 4上使用Mojarra 2.2.4.
据我所知,从BalusC的回答是如何以及何时在JSF中销毁@ViewScoped bean?,@ViewScoped bean应该在三种情况下销毁:
我的bean在前两种情况下被销毁,但是在超过最大逻辑视图数时却没有.我已经验证了bean 在超过最大值时会过期(我得到一个ViewExpiredException),但是在会话本身到期之前它们仍然没有被销毁.
出于内存消耗的原因,我想在第三种情况下销毁bean,特别是因为它们在到期后无法使用.
这是我的豆子:
@javax.inject.Named("sandboxController")
@javax.faces.view.ViewScoped
public class SandboxController implements Serializable {
private static final Logger log = Logger.getLogger(SandboxController.class.getName());
@PostConstruct
public void postConstruct() {
log.log(Level.INFO, "Constructing SandboxController");
}
@PreDestroy
public void preDestroy() {
log.log(Level.INFO, "Destroying SandboxController");
}
public String getData() {
return "abcdefg";
}
}
Run Code Online (Sandbox Code Playgroud)
和我的sandbox.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML …
Run Code Online (Sandbox Code Playgroud)