2KB项目,专业的源码交易网站 帮助 收藏 每日签到

在 JSF Portlets 中使用 CDI

  • 时间:2019-01-23 18:41 编辑:2KB 来源:2KB.COM 阅读:333
  • 扫一扫,手机访问
  • 分享
摘要:
JSF CDI TCK 英文原文:Using CDI with JSF Portlets

随着CDI的portlet集成库的放出,我们可以在JSF portlet中通过Portlet桥,利用CDI带来的巨大优点。

怎么使用?

除了通常的Portlet桥依赖以外,在portlet中使用CDI还需要:

  • 在项目中添加以下依赖:
<dependency>
    <groupId>org.gatein</groupId>
    <artifactId>cdi-portlet-integration</artifactId>
    <version>1.0.2.Final</version>
</dependency>
  • 在WAR包的WEB-INF目录下,新增一个空的beans.xml文件。
  • 在portlet.xml中,添加以下过滤器的定义:
<filter>
	<filter-name>PortletCDIFilter</filter-name>
	<filter-class>org.gatein.cdi.PortletCDIFilter</filter-class>
	<lifecycle>ACTION_PHASE</lifecycle>
	<lifecycle>EVENT_PHASE</lifecycle>
	<lifecycle>RENDER_PHASE</lifecycle>
	<lifecycle>RESOURCE_PHASE</lifecycle>
</filter>

<filter-mapping>
	<filter-name>PortletCDIFilter</filter-name>
	<portlet-name>yourPortletName</portlet-name>
</filter-mapping>
PortletCIDFilter只包括接收到的portlet请求可以使用CDI。如果你的程序代码框架需要处理portlet响应,则需要使用即可以处理请求又能够处理响应的PortletCDIResponseFilter来代替。

@RequestScoped

使用此作用域的bean在portlet中的行为与常规的JSF不同。在portelt中,设定为ActionRequest的bean类,其中任何修改的内容都无法到达portlet生命周期的其他阶段,包括RenderRequest。所以,建议不要一个JSF的portlet中的CDI bean类中,使用此作用域。推荐使用GateIn 3.6.0 Final中新增的@PortletLifecycleScoped。这个新的作用域允许为了渲染portlet,在一个action里面,设置你想要的数据;并且可以从ActionRequest到RenderRequest阶段保持Bean的实体。

@ConversationScoped

临时会话跟一个标记为@RequestScoped的Bean类具有相同的行为。因此,不推荐为渲染JSF portlet而让数据可用。

预计JSF portlet会提供对长会话的支持,但是,仍然有一些问题需要注意:

  • 在RenderRequest阶段,结束一个长会话时,将导致接下来的portlet渲染出现一个ConversationNotFoundException。这是因为portlet渲染所触发的url,包含有cid参数;CDI据此参数确定是创建一个长会话还是一个临时会话。如果会话终结时参数仍存在,那么在下次portlet渲染时,将会试图重新启动结束该会话。
  • 使用AJAX来开始或者结束一个长会话是不错的选择。我们需要重新渲染包括URL在内的所有portlet组件,从而让CDI知道我们点击一个链接或者按钮所使用的会话。如果不更新URL,链接有可能被赋予一个旧的cid值,从而导致ConversationNotFoundException,或者直接就没有cid,导致所有的调用都是临时会话。

GateIn Scopes

最近,在GateIn 3.6.0 Final版本中提供了两个新的作用域:@PortletLifecycleScoped与@PortletRedisplayScoped。这两个作用域在JSF portlet中非常实用,并且可以跟其他的CDI作用域的bean类进行无缝交互。这些作用域将在GateIn的博客文章中展开讨论。

希望这篇文章能够指出在JSF portlet开发中,使用CDI时的一些常见陷阱。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部