在 WebSphere Application Server 中一起实施 JSF-2.3 和 CDI
implementing JSF-2.3 and CDI together in WebSphere Application Server
我最近升级到使用 Oracles new JSF-2.3 which involved adding the dependency as an external library in my pom.xml as I am using maven, As opposed to previously using WebSphere Application server's (WAS) inbuilt JSF-2.2 feature。我想升级以利用新的 f:websocket 功能,该功能允许我将消息从服务器推送到客户端以实现一些巧妙的异步页面加载。
但在我们开始之前,升级后,我注意到我的@ManagedBean 注释已被弃用。经过一些快速谷歌搜索后,我发现我应该使用 CDI 注释,如 @Named 等,这使我一起 question, from which I learnt that I could not use an external JSF library with WAS's inbuilt CDI-1.2 feature。
我的问题是,根据服务器端的 JSF-2.3 spec,我需要使用 CDI @Inject 注释将 "PushContext" 注入到托管 bean 的变量中,如下所示:
@Inject @Push(channel="foo")
private PushContext bar;
我一直无法找到与 @Inject 等效的 JSF 注释,它可以将一个实例注入我的 PushContext 变量,例如我已经尝试过 @ManagedProperty。因此,我需要获得与 JSF 2.3 一起使用的 CDI 实现才能完成这项工作。
我尝试过的事情:
- 我已尝试使用 WAS 中的内置 CDI 功能以及上述问题中显示的代码。
- 我试过不使用默认的 CDI 功能,并在我的 pom.xml 中添加一个 CDI-1.2 dependency(因此将 CDI 添加为外部库)也没有用
- 我也试过只添加 Javax.inject library 因为我只需要 @Inject 注释作为依赖项而不是 CDI,它也不起作用(值得一试)
如果我无法获得使用自定义 JSF 库的 CDI 实现,我不知道应该如何使用 WAS 中的新 JSF-2.3 功能,我肯定遗漏了一些东西.. .
我也听说过一个叫做 "cdi-enablers" 的东西可以帮助我吗?他们是合法的吗?或者只是一些黑客组合在一起使某些东西起作用?
求助!!!
经过大量研究和论坛搜索,我得出结论,让 JSF-2.3 和 CDI-1.2 协同工作以利用 WAS 中的 f:websocket 特性几乎是不可能的。请参阅 IBM 支持页面上的 my post,确认了这一点。
如@Gas 在我的 中指出的那样,使用 JSF-2.2 仍然使用 Web 套接字的一种方法是使用 Javax.websocket 包。然而,这个 web 套接字实现的局限性在于,将包含在 SessionScoped ManagedBean 中的数据发送到该会话的客户端远没有像我使用 JSF-2.3 中的 f:websocket 那样容易喜欢做。
我最近升级到使用 Oracles new JSF-2.3 which involved adding the dependency as an external library in my pom.xml as I am using maven, As opposed to previously using WebSphere Application server's (WAS) inbuilt JSF-2.2 feature。我想升级以利用新的 f:websocket 功能,该功能允许我将消息从服务器推送到客户端以实现一些巧妙的异步页面加载。
但在我们开始之前,升级后,我注意到我的@ManagedBean 注释已被弃用。经过一些快速谷歌搜索后,我发现我应该使用 CDI 注释,如 @Named 等,这使我一起
我的问题是,根据服务器端的 JSF-2.3 spec,我需要使用 CDI @Inject 注释将 "PushContext" 注入到托管 bean 的变量中,如下所示:
@Inject @Push(channel="foo")
private PushContext bar;
我一直无法找到与 @Inject 等效的 JSF 注释,它可以将一个实例注入我的 PushContext 变量,例如我已经尝试过 @ManagedProperty。因此,我需要获得与 JSF 2.3 一起使用的 CDI 实现才能完成这项工作。
我尝试过的事情:
- 我已尝试使用 WAS 中的内置 CDI 功能以及上述问题中显示的代码。
- 我试过不使用默认的 CDI 功能,并在我的 pom.xml 中添加一个 CDI-1.2 dependency(因此将 CDI 添加为外部库)也没有用
- 我也试过只添加 Javax.inject library 因为我只需要 @Inject 注释作为依赖项而不是 CDI,它也不起作用(值得一试)
如果我无法获得使用自定义 JSF 库的 CDI 实现,我不知道应该如何使用 WAS 中的新 JSF-2.3 功能,我肯定遗漏了一些东西.. .
我也听说过一个叫做 "cdi-enablers" 的东西可以帮助我吗?他们是合法的吗?或者只是一些黑客组合在一起使某些东西起作用?
求助!!!
经过大量研究和论坛搜索,我得出结论,让 JSF-2.3 和 CDI-1.2 协同工作以利用 WAS 中的 f:websocket 特性几乎是不可能的。请参阅 IBM 支持页面上的 my post,确认了这一点。
如@Gas 在我的