web.xml.jsf_看一下即将发布的JSF 2.3 Push支持

web.xml.jsf

如前几篇文章所述,下一版本的JavaServer Faces(Mojarra)已添加了许多增强功能。 JSF 2.3计划于2017年与Java EE 8一起发布,但是您现在可以通过从源代码构建或运行里程碑版本来获得JSF的一些增强功能和更新以用于测试目的。

对API的此类增强之一是通过f:websocket标签和Push API添加了基于单向(服务器到客户端)的websocket推送通信。 OmniFaces团队开发了基于o:socket的JSF解决方案,该解决方案是OmniFaces实用程序库的一部分。 具体来说,JSR 372专家组成员Bauke Scholtz和Arjan Tijms对Mojarra代码库做出了此以及许多其他增强和修复。

启用f:websocket支持的补丁尚未应用于Mojarra 2.3分支,但是您可以从发行版JAVASERVERFACES_SPEC_PUBLIC-1396获得补丁。 在将修补程序应用于本地Mojarra克隆之前,应确保从中央2.3分支更新源,以确保已应用最新更新。 用法很简单,非常类似于OmniFaces站点上有据可查的o:socket功能,请执行以下步骤来使用f:websocket

首先,添加

javax.faces.ENABLE_WEBSOCKET_ENDPOINT

应用程序的web.xml的context参数,并将其值设置为true。

<context-param><param-name>javax.faces.ENABLE_WEBSOCKET_ENDPOINT</param-name><param-value>true</param-value></context-param>

客户端代码

在客户端(JSF视图)上,添加f:websocket标记,然后指定要连接的通道。 您还必须指定一个onmessage侦听器,该侦听器将在收到消息后执行指定JavaScript函数。 还可以指定可选属性onclose ,以允许指定JavaScript函数在连接关闭时执行。 在以下示例中,我们指定套接字将与名为dukeSocketListeneronmessage侦听器连接到名为“ duke”的通道:

<f:websocket channel="duke" onmessage="dukeMessageListener"/>

可以使用三个参数(推送消息JSON对象,通道名称,消息事件)来调用onmessage侦听器。 如果您只是想传递一条消息,它可能类似于以下内容:

function dukeMessageListener(message) {PF('broadcastGrowl').show(message);
}

如果指定了可选的onclose侦听器,则相应的函数可以接受三个参数(关闭原因码–整数,通道名称,消息事件),但仅需要第一个。

在大多数情况下,其目的是向服务器发送一条消息,以通知具有相同websocket通道规范的所有客户端视图。 f:websocket上有一个可选的scope属性,可以将其设置为“ session”,这会将消息限制为仅在当前会话中具有相同websocket通道的所有客户端视图。

最后,如果需要,可以将可选port属性设置为指定除HTTP端口以外的TCP端口号。

服务器端代码

由于我们计划将消息从服​​务器推送到所有连接的客户端,因此让我们看一下服务器端代码。 可以通过包含@Push批注将新的PushContext注入到任何CDI工件中,并且上下文名称可以对应于通道名,或者可以在@Push批注上指定可选的channel属性以指示要@Push发送消息的通道该消息应广播。

@Inject @Pushprivate PushContext duke;
...
public void sendMessage(Object message){duke.send(message);
}

该消息将被编码为JSON,并传递到为f:websocketonmessage属性指定的客户端上JavaScript函数的message参数。 可以发送任何类型的容器,例如普通的String,JavaBean,Map,Collection等作为消息。

用法示例

假设我们有一个用于Web应用程序的管理控制台,并且我们想为管理员提供一种向客户端发出警报的方法。 这样,管理控制台可以具有用于消息输入的文本区域,以及用于调用消息发送的命令按钮。

<h:inputText id="pushMessage" value="#{testBean.pushMessage}"/>
<h:commandButton action="#{testBean.sendAdminMessage}" value="Send Message"/>

然后,JSF控制器类testBean将具有sendAdminMessage方法,该方法将存储在pushMessage字符串中的消息发送给我们的sendMessage方法。

@Inject @Pushprivate PushContext duke;...public void sendAdminMessage(){sendMessage(pushMessage);FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Message has been broadcasted"));
}...public void sendMessage(Object message){duke.send(message);
}

任何将收到消息的客户端都应包含f:websocket标记,该标记指向duke通道。 客户端还应至少包括在收到消息时要调用JavaScript函数。

<f:websocket channel="duke" onmessage="dukeMessageListener"/><p:growl id="messages"/>function dukeMessageListener(message) {facesmessage.severity = 'info';PF('broadcastGrowl').show(message);
}

在此特定示例中,PrimeFaces咆哮消息组件将在收到消息时进行更新。

由于JSR 372专家组成员的所有杰出贡献,JSF 2.3的状态良好。

翻译自: https://www.javacodegeeks.com/2016/02/look-upcoming-jsf-2-3-push-support.html

web.xml.jsf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android视频教程那个讲的最好,最全的android视频教程推荐 android视频教程怎么学习效果好...

很多同学对android学习很感兴趣&#xff0c;都对此有这样的疑问&#xff1a;“最全的android视频教程推荐&#xff0c;android视频教程怎么学习效果好?”那这里android培训专家就给我们来具体讲解下。Android开发学习主要是学习Android平台下开发的基础知识以及项目编程的实用…

android size_t在哪个头文件,size_t

size_t 类型定义在cstddef头文件中&#xff0c;该文件是C标准库的头文件stddef.h的C版。它是一个与机器相关的unsigned类型&#xff0c;其大小足以保证存储内存中对象的大小。例如&#xff1a;bitset的size操作返回bitset对象中二进制位中1的个数&#xff0c;返回值类型是size_…

jqgrid mvc_将JQGrid与Spring MVC和Gson集成

jqgrid mvc我在一个单页面应用程序上工作&#xff0c;我想在使用Spring MVC的应用程序的一部分中使用网格功能。 自从我上次使用JQGrid以来已经有一段时间了&#xff0c;找到让我起床所需的信息有点困难。 在这篇文章中&#xff0c;我想整理所有信息并将其放入教程中&#xff0…

javadocs_不会吸引人的JavaDocs源样本

javadocsJavaDoc源代码嵌入很烂&#xff01; 我喜欢JavaDoc&#xff0c;但年龄不理想。 当您使用其他工具&#xff08;例如&#xff0c;在Microsoft世界中&#xff09;时&#xff0c;嵌入式示例突然变得惊人&#xff0c;并且内置了“搜索”功能&#xff01; 我们为什么不能拥…

html语义化有哪些优点,语义化的HTML结构到底有什么好处?

相信大家都知道html和css&#xff0c;知道html结构和css表现分离&#xff0c;知道html语义化&#xff0c;这些都是这几年的热门关键字。语义化的html在国内也是一两年前才开始被追捧的&#xff0c;看看现在群里谈论的html结构&#xff0c;关于html结构的面试题&#xff0c;语义…

vert.x 分布式锁_使用Vert.x进行响应式开发

vert.x 分布式锁最近&#xff0c;似乎我们正在听到有关Java的最新和最好的框架的消息。 Ninja &#xff0c; SparkJava和Play等工具; 但是每个人都固执己见&#xff0c;使您感到需要重新设计整个应用程序以利用它们的出色功能。 这就是为什么当我发现Vert.x时令我感到宽慰的原因…

c语言 char c1,c2; for (c1='0',C语言-5循环结构(PPT)复习课程.ppt

C语言-5循环结构(PPT)复习课程.ppt第五章 循环结构程序设计;课程引入;第五章 循环结构程序设计;5.1 while 语句;例1&#xff1a;求;1. do-while循环语句的形式 do 循环体 while(条件表达式)&#xff1b; ;表达式0&#xff1f;;【例5.3】while和do-while循环的比较。;一般格式&a…

jvm高并发_JVM上的高并发HTTP客户端

jvm高并发HTTP可能是最流行的应用程序级别协议&#xff0c;并且有许多库在网络I / O之上实现它&#xff0c;这是常规I / O的一种特殊&#xff08;面向流&#xff09;情况。 由于所有I / O都有很多共同点1 &#xff0c;所以让我们开始对其进行一些讨论。 我将集中讨论具有大量并…

html双击变成可编辑,jquery 实现双击编辑并保存

jquery 实现双击编辑并保存Jesse2013-12-11 19:47:001153最近在做一个数据修改的例子&#xff0c;一个个点开修改很麻烦&#xff0c;于是就想到ecshop后台里的 只需单击就以编辑了&#xff0c;在网上查阅资料&#xff0c;就想到双击修改&#xff0c;失去鼠标焦点后post执行HTML…

jmeter 采样器作用_实施自定义JMeter采样器

jmeter 采样器作用随着我们采用不同的体系结构和实现方式&#xff0c;对通用压力测试工具的需求不断增长。 关于负载测试&#xff0c; Apache Jmeter是最知名的工具之一。 它支持许多协议&#xff0c;例如ftp http tcp&#xff0c;并且可以轻松地用于分布式测试。 Jmeter还为…

html 闪烁文本,HTML最简单的文字闪烁代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Titlekeyframes blink{0%{opacity: 1;}50%{opacity: 1;}50.01%{opacity: 0;}100%{opacity: 0;}}-webkit-keyframes blink {0% { opacity: 1; }50% { opacity: 1; }50.01% { opacity: 0; }100% { opacity: 0; }}-moz-keyframes blin…

xp系统 javafx_使用JavaFX构建React系统

xp系统 javafxJavaFX是用于在Java中构建图形应用程序的新标准库&#xff0c;但是许多程序员仍然对Swing甚至&#xff08;高音&#xff09;AWT感到困惑。 在Java诞生20年来&#xff0c;发生了很多事情。 两年前&#xff0c;当我开始研究Speedment UI的JavaFX库时&#xff0c;我发…

html手机端图片点击放大缩小快捷键,PS放大缩小图片的快捷键是什么?PS放大缩小图片的操作技巧...

PS放大缩小图片的快捷键是什么&#xff1f;PS怎么放大缩小图片&#xff1f;使用PS处理图片可是个精细的活儿&#xff0c;为了让图片处理得更加完美&#xff0c;我们经常需要将图片放大来处理&#xff0c;修改好之后又要缩小图片看下整体效果&#xff0c;这样来回切换其实挺麻烦…

webstorm html代码提示设置,Webstorm设置代码提示

下载路径&#xff1a; https://github.com/virtoolswebplayer/ReactNative-LiveTemplate本插件可以配合Webstorm设置代码提示。Mac下安装Webstorm2016.1为例安装路径在终端&#xff1a;$ cd ~/Library/Preferences/$ ls找到Webstorm版本$ open WebStorm2016.1先将ReactNative.x…

滑动拼图验证码操作步骤:_拼图项目:一个不完整的难题

滑动拼图验证码操作步骤&#xff1a;马克雷因霍尔德&#xff08;Mark Reinhold&#xff09;最近提议延迟Java 9&#xff0c;以花更多的时间完成项目Jigsaw&#xff0c;这是即将发布的版本的主要功能。 虽然这个决定肯定会使Java的厄运论者重回舞台&#xff0c;但我个人感到很轻…

document中输出html字符串流,HTML DOMDocument从段落后面的标签中获取字符串

我想解析html文档。我需要h2之后所有p的内容。要解析的html :(示例)Lorem ipsumLorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridic…

arcgis adf数据_使用ADF列表视图的主从数据

arcgis adf数据从UI角度来看&#xff0c;最近ADF Faces 表组件不再被认为很酷。 对于显示数据集合&#xff0c; 列表视图今天应该很酷。 这并不意味着我们根本不应该使用af&#xff1a;table 。 在某些情况下&#xff08;经常是:)&#xff09;&#xff0c;表比列表视图更适合。…

jmeter添加html,Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告...

目录一、jmeter报告仪表板相关信息二、文件修改说明三、jmeter.properties文件配置四、user.properties文件配置五、新建jtl报告目录六、复制jmeter.properties文件并重命名七、写批处理bat文件八、准备jmeter测试计划脚本九、本地调试bat文件十、Jenkins自动化构建一、jmeter报…

gradle java_Java EE,Gradle和集成测试

gradle java在过去的几年中&#xff0c;Apache Maven已成为Java和Java EE项目的事实上的构建工具。 但是从两年前开始&#xff0c; Gradle便获得了越来越多的用户。 在我之前的文章&#xff08; http://www.lordofthejars.com/2015/10/gradle-and-java-ee.html &#xff09;之后…

javafx 内存占用_JavaFX:TouchGesture内存泄漏?

javafx 内存占用在我的一个项目中&#xff0c;最近几天我在与内存泄漏作斗争&#xff08;是……“耦合”&#xff09;&#xff0c;我得出的结论是可能存在与触摸/滚动手势有关的问题。 在下面的示例中&#xff0c;我有两个按钮。 第一个创建具有一千行的列表视图&#xff0c;第…