当前位置: 首页 > 知识库问答 >
问题:

Vaadin中推式支架的问题

凌俊名
2023-03-14

我对Vaadin 7中的服务器推送支持有一些严重的问题,事实证明很难确定这个问题。我已经遵循了《瓦丁之书》中关于启用服务器推送的所有步骤,包括将vaadin-push.jar文件添加到WEB-INF/lib,将“asyncSupport=true”参数添加到@WebServlet注释,并将@Push注释添加到用户界面类。(我还尝试在部署描述符中指定等效项。)我还将org.atmosphere.useWebSocketAndServlet3=true属性添加到Tomcat 7服务器的catalina.properties文件中,如https://vaadin.com/wiki/-/wiki/Main/Working中关于推送问题的建议。

我发现服务器推送支持非常古怪,很难识别问题。例如,在开发代码时,服务器通常不会自动重新启动;当我关闭浏览器(不仅仅是浏览器窗口),停止服务器并重新启动Eclipse时,才识别新代码;缺少这些步骤都将导致服务器推送无法工作。请注意,此问题仅在启用服务器推送时发生。我读到一些关于启用推送时会话不会过期的内容(https://vaadin.com/forum#!/线程/3576361),所以可能这就是原因。。

我经常遇到可疑的日志消息:

Mar 02, 2014 9:25:45 PM com.vaadin.server.communication.PushHandler$3 run
WARNING: Could not find push connection to close: 38450652-2a2b-4221-8300-8313e9c4779a with    
transport WEBSOCKET

Mar 02, 2014 9:25:45 PM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.  Could not load     
java.nio.ByteBuffer.  

大气似乎确实找到了异步支持:

INFO: Atmosphere is using async support:     
org.atmosphere.container.Tomcat7AsyncSupportWithWebSocket running under container: Apache     
Tomcat/7.0.47

我也发现了这个错误;不知道这是否表明存在严重问题(因为我不想进入大气层,所以没有尝试解决):

WARNING: No BroadcasterCache configured. Broadcasted message between client reconnection will be 
LOST. It is recommended to configure the org.atmosphere.cache.UUIDBroadcasterCache

也就是说,火狐在服务器推送上运行得很好,而Chrome有问题,IE会吐出错误(惊喜!)。特别是,Chrome经常需要相当长的时间来向服务器传达用户界面交互(例如,按钮推送),从而在右上角出现旋转器(从黄色到橙色再到红色)。IE只是在打开多个窗口时更新错误的UI组件。所以,只要每个用户都使用火狐,就没有问题,但我不可能假设这一点。

我看到了这篇文章,开发者在这里发泄了他们对该功能的不满:https://vaadin.com/forum#!/Thread/4040408。这是一篇相当新的帖子,所以听起来不太有希望。。我需要服务器推送功能的唯一原因是允许聊天盒插件(https://vaadin.com/directory/-/directory/addon/chatbox)实时更新。

有什么想法吗?有没有人遇到过这样的错误,并设法找到了一些解决办法?或者更好的是,有没有人使用聊天盒插件来处理服务器推送?

谢谢,

威廉

共有1个答案

鲁昕
2023-03-14

Web推送仍然是一项年轻的技术,尤其是WebSocket。例如,Tomcat用另一个WebSocket实现替换了一个WebSocket实现。Vaadin采用大气库和Vaadin 7中的所有其他工作都是相对较新的。在这个问题发布后的几个月里,情况有了很大改善。我建议再试一次。

使用web服务器的最新版本。例如,Tomcat7和

使用最新版本的Java8和Vaadin(现在是7.3.7)。

不需要调用UI::setPollInterval,如上面的注释中所述。该功能只使用一种方法进行推送。

您所需要的只是@Push注释。还有一个线程,或者更好的是一个ScheduledExecutorService,用于更新数据以显示在应用程序中。使用@Push注释启用大气库。Atmosphere尝试多种推送技术,从WebSocket开始,并自动使用其他技术作为后援。

我最近(2015-01)在Vaadin 7.3.7中发布了一个推送工作示例,作为对另一个问题的回答。我的示例故意简化,在新的默认Vaadin应用程序项目中使用单个文件替换MyUI文件的内容。

 类似资料:
  • 使用Vaadin的Table类可以向表中添加操作处理程序。例如,在以前的Vaadin版本中,当用户在表格区域内单击鼠标右键时,屏幕上会显示以下2个选项: 行动。处理程序存在于Vaadin 8中,但是不可能添加操作。在Vaadin 8中处理网格,我也没有找到任何其他方法来创建上下文菜单。 在网格中使用操作框架的方法是什么?Grid是否有其他创建上下文菜单的方法?换句话说,上面的例子是如何写的。 现有

  • 几个月前,我已经将Vaadin作为Eclipse插件安装,如何找出我的机器上当前安装了哪个版本的Vaadin框架?

  • 我可以通过重新启动服务器并尝试重新登录来重现此问题。我在开发模式和生产模式中测试了这个问题,得到了相同的行为。

  • 8mm轴承支架 A 36mm电机支架 42步进电机支架 57步进电机支架(黑) 主控板支架 B 支架 3*3 支架 L1 支架 P1 支架 P3 支架 U1 25电机支架 37电机支架 MECDS-150 舵机支架 U形支架 B U形支架 C 通用电机支架

  • 问题内容: Vaadin似乎在向两个方向推进: Vaadin框架(Java-服务器端) Vaadin元素(Javascript-客户端) 它们是否打算现在或将来一起使用?还是只有2种独立的,不相关的产品? 例如 ,Vaadin网格元素(不要与Vaadin 7的Java Grid混淆)是否打算在“ Java-land”中使用? 我在“ 服务器端元素”一文中找到了有关从服务器端创建/操作Javascr

  • 概述 支架U1通常用作伺服系统、电机和轴的结构支撑或连接点。它带有3个8mm中心孔可连接8mm轴,24个4mm孔可与makeblock平台零件兼容。 参数 材质:6061铝 厚度:3mm 尺寸图纸 搭建案例