我在Vaadin 7服务器推送支持方面遇到了一些严重问题,并且证明难以确定问题。我已经遵循了Vaadin之书中关于启用服务器推送的所有步骤,包括将vaadin-push.jar文件添加到WEB-INF/lib,将“asyncSupported = true”参数添加到@WebServlet注释,并添加@Push注释到UI类。 (我也尝试在部署描述符中指定等效项。)我还将org.atmosphere.useWebSocketAndServlet3 = true属性添加到我的Tomcat 7服务器的catalina.properties文件中,如https://vaadin.com/wiki/-/wiki/Main/Working%20around%20push%20issues中所建议的。Vaadin推送支持问题
我发现服务器推送支持很古怪,很难识别问题。例如,在开发代码时,服务器通常不会自动重新启动;只关闭浏览器(不仅仅是浏览器窗口)时识别新代码,停止服务器并重新启动Eclipse;错过任何这些步骤将导致服务器推送不工作。请注意,只有启用服务器推送时才会出现此问题。我读了一些有关会议没有当推启用到期(https://vaadin.com/forum#!/thread/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
也就是说,Firefox的工作得很好与服务器推送,而铬有问题和IE喷出错误(惊喜!)。特别是,Chrome通常需要很长时间才能将UI交互(例如按钮推送)传递到服务器,从而在右上方出现一个微调(从黄色变为橙色变为红色)。当多个窗口打开时,IE只会更新错误的UI组件。所以,只要每个用户使用Firefox都没有问题,但我不可能假设。
我遇到过这个帖子,开发人员对这个功能感到沮丧:https://vaadin.com/forum#!/thread/4040408。这是相当近期的一篇文章,所以听起来并不太有希望。我需要Server Push功能的唯一原因是允许ChatBox插件(https://vaadin.com/directory/-/directory/addon/chatbox)实时更新。
任何想法?有没有人得到这些类型的错误,并设法得到一些解决方法?或者更好的是,有没有人获得ChatBox加载项以使用服务器推送?
感谢,
威廉
对,这是一些比较干净的东西。你使用SpringVaadinIntegration插件吗? – dzezzz
感谢您的回答。不过,只是使用普通的旧Vaadin。 – William
不确定您的应用程序@William的要求是什么,但我遇到过类似的问题,无法解决它们。我改为使用'UI.setPollInterval()',它似乎工作,并且可靠。这是一次民意调查,而不是推动,但至少它是有效的。 – hmjd