Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在WebSphereApplicationServer中同时实现JSF-2.3和CDI_Java_Jsf_Cdi_Websphere Liberty_Jsf 2.3 - Fatal编程技术网

Java 在WebSphereApplicationServer中同时实现JSF-2.3和CDI

Java 在WebSphereApplicationServer中同时实现JSF-2.3和CDI,java,jsf,cdi,websphere-liberty,jsf-2.3,Java,Jsf,Cdi,Websphere Liberty,Jsf 2.3,我最近升级到使用,这涉及在我使用maven时将依赖项作为外部库添加到pom.xml中,而不是以前使用WebSphereApplicationServer(WAS)。我想升级以利用新的f:websocket特性,它允许我将消息从服务器推送到客户端,以实现一些巧妙的异步页面加载 但在开始之前,一旦升级,我注意到我的@ManagedBean注释已被弃用。在快速搜索之后,我发现我应该使用CDI注释,比如@Named等。这就引出了我的问题,从中我了解到我不能将外部JSF库与WAS一起使用 我的问题是,根据

我最近升级到使用,这涉及在我使用maven时将依赖项作为外部库添加到pom.xml中,而不是以前使用WebSphereApplicationServer(WAS)。我想升级以利用新的f:websocket特性,它允许我将消息从服务器推送到客户端,以实现一些巧妙的异步页面加载

但在开始之前,一旦升级,我注意到我的@ManagedBean注释已被弃用。在快速搜索之后,我发现我应该使用CDI注释,比如@Named等。这就引出了我的问题,从中我了解到我不能将外部JSF库与WAS一起使用

我的问题是,根据服务器端的说明,我需要使用CDI@inject注释将“PushContext”注入托管bean上的变量,如下所示:

@Inject @Push(channel="foo")
private PushContext bar;
我一直找不到与@Inject等效的JSF注释,它可以将实例注入到我的PushContext变量中,例如,我尝试了@ManagedProperty。因此,我需要使用JSF2.3来实现CDI,以实现这一点

我尝试过的事情:
  • 我已经尝试在WAS中使用内置CDI特性,代码如上面提到的问题所示
  • 我尝试过不使用默认的CDI特性,并在pom.xml中添加了一个(因此将CDI添加为外部库),这也不起作用
  • 我还尝试只添加了,因为我需要@Inject注释作为依赖项,而不是CDI,CDI也不起作用(值得一试)
我不知道该如何使用WAS中的新JSF-2.3特性。如果我不能使用自定义JSF库实现CDI,我肯定会错过一些东西

我也听说过一种叫做“cdi使能器”的东西,这些能帮助我吗?它们合法吗?或者只是有人为了做点什么而做的一些黑客


救命啊

经过大量的研究和论坛调查,我得出结论,让JSF-2.3和CDI-1.2一起使用WAS中的f:websocket功能几乎是不可能的。请参阅IBM支持页上的,确认了这一点


使用JSF-2.2仍然使用web套接字的一种方法是使用Javax.websocket包,正如@Gas在我的文章中指出的那样。然而,这种web套接字实现的局限性在于,仅将SessionScoped ManagedBean中包含的数据发送到该会话的客户机远不如我希望使用JSF-2.3中的f:websocket那样容易。

我已经测试过,当JSF和CDI与webapp捆绑在一起。我在应用程序中打包CDI时遵循的说明如下:但是,请注意,我无法使f:websocket功能正常工作;这似乎需要在CDI/JSF和服务器的WebSocket impl之间进行服务器集成。