加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

春季-JSF bean和可序列化问题

发布时间:2020-12-15 01:22:14 所属栏目:大数据 来源:网络整理
导读:我对使用Spring托管服务的JSF Bean有问题.我收到一个错误消息,说JSF bean中使用的spring bean无法序列化. @ManagedProperty("#{customerService}")private CustomerService customerService; 我无法使该服务可序列化,因为它使用的是JdbcTemplate,而该JdbcTem

我对使用Spring托管服务的JSF Bean有问题.我收到一个错误消息,说JSF bean中使用的spring bean无法序列化.

@ManagedProperty("#{customerService}")
private CustomerService customerService;

我无法使该服务可序列化,因为它使用的是JdbcTemplate,而该JdbcTemplate本身是不可序列化的.而且,对具有应用程序范围的Spring bean进行序列化根本没有任何意义,所以我不明白为什么有人的代码试图对其进行序列化.

我已经使用Spring服务与JSF项目一起工作,并且没有此类问题,因此这种合作必不可少.但是,该项目是基于示例项目从头开始构建的,因此spring-JSF合作的配置肯定有问题,但是我不知道在哪里搜索.

Spring for JSF的配置为:

<!-- JSF and Spring are integrated -->
<application>
    <el-resolver>
        org.springframework.web.jsf.el.SpringBeanFacesELResolver
    </el-resolver>
</application>

如何解决这个问题?

最佳答案
无法避免JSF序列化错误.甚至ApplicationScoped Bean也被序列化(当它们注入到其他Bean中时).

但是解决方案是在春季进行的.您必须使用作用域代理.

要将bean包装到可序列化代理中,您必须添加到bean主体中:

<aop:scoped-proxy proxy-target-class="true"/>

必须添加spring aop命名空间和spring-aop依赖项.

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

就是这样!在bean中将是可序列化元素,该代理将在反序列化时从Spring上下文重新加载bean.

这里唯一的迷惑是我必须创建cglib class-level-proxy. JRE代理无法正常工作,因为在反序列化期间该接口不可用…我不完全理解为什么,但是至少我有可行的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读