相关疑难解决方法(0)

@PreDestroy从未调用@ViewScoped

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

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

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

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

UPDATE

@PostConstruct注释工作正常.

jsf annotations javabeans jsf-2

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

如何以及何时在JSF中销毁@ViewScoped bean?

所述的生命周期 @RequestScoped@SessionScopedBean 管理豆由Servlet容器自身管理,因为它们是基本上作为一个属性存储HttpRequestHttpSession分别.JSF如何管理生命周期@ViewScopedBean?我知道它是在创建视图时创建的,并且可以使用,直到有回发到另一个视图.但是我发现在我们离开那个视图后不会立即收集垃圾.

jsf destroy jsf-2 managed-bean view-scope

15
推荐指数
1
解决办法
2万
查看次数

ViewScoped bean的内存泄漏?

在我们 在JBoss 7.1.1上的JavaEE6项目(EJB3,JSF2)中,似乎我们有SeamFaces的内存泄漏.@ViewScoped

我们制作了一个小原型来检查这个事实:

  • 我们使用JMeter来调用页面200次;
  • 该页面包含并调用一个注入有状态EJB的viewscoped bean;
  • 我们将会话超时修复为1分钟.

在测试结束时,我们使用VisualVM检查内存的内容,这里我们得到了:

  • 使用@ViewScopedbean,我们仍然可以获得200个有状态实例MyController- 并且该@PreDestroy方法永远不会被调用;
  • 使用@ConversationScopedbean,@preDestroy方法称为会话结束,然后我们得到一个干净的内存.

我们是否严重使用视图范围,还是真的是一个错误?


这是XHTML页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:ui="http://java.sun.com/jsf/facelets"   
   xmlns:s="http://jboss.org/seam/faces">
   <f:metadata>
        <f:viewParam name="u" value="#{myBean.uselessParam}" />
        <s:viewAction action="#{myBean.callService}" />
   </f:metadata>
   <h:body >
        <f:view>
        </f:view>
   </h:body>    
</html>
Run Code Online (Sandbox Code Playgroud)

现在包含的bean myBean.对于@ConversationScoped变体,所有注释的部分都是未注释的.

@ViewScoped
// @ConversationScoped
@Named
public class MyBean implements Serializable 
{
    @Inject
    MyController myController; …
Run Code Online (Sandbox Code Playgroud)

memory-leaks cdi seam3 jsf-2 view-scope

6
推荐指数
2
解决办法
6697
查看次数

会话结束时销毁视图范围的bean

我的问题与此(或其他)有关:

@PreDestroy从未在@ViewScoped上调用

如此处所述,没有简单的解决方案来解决在导航时销毁视图范围的Bean的问题,并且在会话期满时似乎也是如此。

释放(调用该@PreDestroy方法)JSF视图范围的Bean 的非平凡方法会是什么样子,或者更确切地说,是会话期满后立即释放?

我在GlassFish 3.1.2上使用Java EE 6和Mojarra2.1.x。

jsf glassfish java-ee jsf-2 view-scope

3
推荐指数
1
解决办法
2150
查看次数