首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF2春季XRebel大会话

JSF2春季XRebel大会话
EN

Stack Overflow用户
提问于 2014-08-24 13:57:29
回答 1查看 363关注 0票数 1

我最近安装了XRebel插件,它允许您查看当前会话大小。

我发现,会话在第一个页面加载时立即达到10 mb (初始化auth会话bean)。

对我的设置:

我使用的是JSF2.2、Spring 4和Hibernate 4。

DAO层>服务层>托管Bean

DAO层

代码语言:javascript
复制
@Named
@Singleton
@Repository
public class UserDao extends BaseDao<User>
{
...
}

服务层

代码语言:javascript
复制
@Service
@Named
@Singleton
public class UserService extends BaseService<User>
{


    @Autowired
    private UserDao dao;

...

}

我的第四会话bean,它将在第一页加载时加载。

代码语言:javascript
复制
@Named
@Component
@Scope("session")
public class Auth implements Serializable
{

    @Autowired
    private UserService userService;

    ...
}

在我的applicationContext.xml中

代码语言:javascript
复制
<context:component-scan base-package="com.mypackage" />

当我在会话bean中自动访问服务bean时,这是一个普遍的问题。

Userservice只包含用于撤回、保存和删除用户对象的方法,没有包含用户或其他任何内容的ArrayList。

我在我的auth bean中有两条@Autowired服务-- UserService和SessionService。

如果我推荐UserService,SessionService将达到相同的大小。如果我把这两个词都注释掉,"org.springframework.web.context.request.ServletRequestAttribute...“就会有一个"DestructionCallbackBindingListener”立即达到8mb。

我做错了什么?如何减少会话大小?

我很乐意接受任何帮助。

下面是XRebel的图片,显示userService在会话中的大小约为8mb。http://i.stack.imgur.com/TBXx3.png

查看XRebel,beanFactory似乎保存在用户会话中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-25 11:22:34

我在官方论坛上发布了关于XRebel的信息。这就是我收到的答案。

实际上,可以通过CGLIB代理从会话中访问beanFactory。我们可能需要改进如何识别共享或不应该被视为会话一部分的对象。 我们试图显示每个会话占用多少内存,但是当然是在会话之间共享的。 通常,我们从会话中筛选出瞬态字段就足够了,但我们将查看CGLIB/Spring代理,看看如何通过一般规则过滤掉它们,或者只需将特定的Spring类添加到忽略列表中即可。

简而言之:在查看会话大小时,可以忽略bean工厂,如果可能的话,也可以选择标记自动设置的服务瞬态。

事实上,你现在可以在精神上忽略它,或者如果有可能的话,那么是的,使这些变量暂时消失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25472444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档