相关疑难解决方法(0)

@PreDestroy从未调用@ViewScoped

我有一个@ViewScopedbean,它有一个带@PreDestroy注释的方法,可以确保关闭一些远程连接.但是,当用户导航时不调用该方法.

有什么可以做错的吗?我是否必须在任何地方注册任何内容才能使其正常工作?

这是一个简单的公共方法(void),不会抛出任何异常.

我正在使用带有Tomcat 7.0.12的JSF 2(MyFaces).这可能是Tomcat的问题吗?

UPDATE

@PostConstruct注释工作正常.

jsf annotations javabeans jsf-2

16
推荐指数
1
解决办法
8388
查看次数

链接的ViewScoped bean导致内存泄漏

在JBoss 7.1.1上的JavaEE6项目(EJB3,JSF2)中,似乎我们有@ViewScoped bean的内存泄漏.最后一天,我花时间在这个问题调查上.所以我创建了两个页面的简单项目,以保证在第一页离开@ViewScoped bean之后将被释放.

<context-param>  //web.xml
   <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
   <param-value>server</param-value>
</context-param>
<context-param>
   <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
   <param-value>false</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

TreeBean.java

@ManagedBean
@ViewScoped
public class TreeBean implements Serializable {
 private TreeNode root;  
 public static AtomicInteger count = new AtomicInteger(0);

@Override
protected void finalize() throws Throwable {
    System.out.println("TreeBean beans count: " + count.decrementAndGet() + " (FINALISATION)");
}


public TreeBean() {  
    super();
    System.out.println("TreeBean beans count: " + count.incrementAndGet() + " (INITIALISATION)");
}  
Run Code Online (Sandbox Code Playgroud)

first.xhtml

  ....
  <h:form id="frm">
        <p:tree
            value="#{treeBean.root}"
            var="node"
            id="tree">
    ....
   <p:commandLink
            action="second.xhtml?faces-redirect=true"
            value="toSecond" />
    ....            
Run Code Online (Sandbox Code Playgroud)

second.xhtml

  ....
  <h:form …
Run Code Online (Sandbox Code Playgroud)

out-of-memory jsf-2 view-scope

9
推荐指数
1
解决办法
4267
查看次数

标签 统计

jsf-2 ×2

annotations ×1

javabeans ×1

jsf ×1

out-of-memory ×1

view-scope ×1