Vaadin是一个很棒的框架,开发丰富多彩的Web应用程序非常有用。然而,我对其中发生的一些意想不到的事情感到非常沮丧。我知道很难创建这样一个框架,其中客户端和服务器端组件可以同时编码。它节省了我的时间。
但是,我不知道为什么我收到通信错误,会话过期通知,应用程序有时在服务器环境中冻结。但是,Everything在我的本地环境中运行得非常好。
谁能告诉我为什么我要面对这些问题?
问题:
- 沟通问题? (http://dev.vaadin.com/ticket/8466)
- 会话过期消息? (我将会话设置为在300分钟后过期。但它发生在之前。但是,并非所有时间)
- 应用程序有时冻结。 (我可以点击按钮,但没有用..没有动作..唯一的办法就是重启)
- 在IE中表现非常糟糕。 (我知道这对所有网络应用程序都很常见。但是,与其他浏览器相比,我的应用程序; IE完全糟透了。
- 在treetable中加载延迟对我来说真的很有帮助。
- ICEPush附加组件,完美地完成其工作。但是,过了一段时间它在控制台中给了我异常。(https://vaadin.com/forum#!/thread/234493/4528542)
- 如果我在浏览器中执行任何操作。它反映在另一个浏览器中(应用程序的另一个实例。)http://dev.vaadin.com/ticket/10208)
- 上下文菜单插件:易于实现且非常棒。但是,在慢速网络上多次右键单击时,我会例外。https://vaadin.com/forum#!/thread/119996/4455717
- 恼人的异常消息。有什么需要在UI上显示它?
我已经把大部分时间都花在了论坛上。我真的得到了你们的支持。但是,我不想。
一世 疑似 以下是导致上述问题的原因。
- 我的Vaadin服务器在英国,API服务器在美国,这是通信问题的原因吗?
- 我从Util类的函数构建组件。这是我列表中没有问题7的原因。喜欢这个,
ComponentsBuilder.buildVerticalLayout();
瓦丁8和10
在这几年中,很多事情发生了变化。
沟通问题? (http://dev.vaadin.com/ticket/8466)
该票证已迁移到 问题2178 GitHub。现在标记为关闭。似乎是Tomcat和浏览器中的错误,现在已修复。
这是使用Tomcat 7时某些浏览器的cookie处理导致的错误,并且在应用程序名称后的地址中没有使用尾部斜杠(即 HTTP://主机/应用 代替 HTTP://主机/应用/)。
您可以通过将context属性sessionCookiePathUsesTrailingSlash设置为false来解决此问题。
会话过期消息? (我将会话设置为在300分钟后过期。但它发生在之前。但是,并非所有时间)
我没有试过这个,我只是在这里猜测,但看起来我们在这里向用户显示会话过期消息的getter, com.vaadin.server.SystemMessages
类,方法 getSessionExpiredCaption()
& getSessionExpiredMessage()
。
对此的描述 SystemMessages
上课说:
使用VaadinService.setSystemMessagesProvider(SystemMessagesProvider)进行自定义。
所以也许我们可以通过实现来覆盖会话过期的消息 SystemMessagesProvider
接口。 (我不确定这一切是如何运作的。)
应用程序有时冻结。 (我可以点击按钮,但没有用..没有动作..唯一的办法就是重启)
我不知道这个。我发现Vaadin 7在生产中非常稳定,一次运行无数个月而没有失败。 Vaadin 8在我目前的开发工作中似乎也完全可靠。
近年来,Web浏览器,Web服务器,诸如Tomcat和Jetty等Java Servlet容器的实现已经得到了显着的改进和发展。
如果用户的Web浏览器与Vaadin服务器失去联系,他们应该会看到一条消息。
在IE中表现非常糟糕。 (我知道这对所有网络应用程序来说都很常见。但是,我的应用程序与其他浏览器相比; IE完全糟透了。有人请大家跟门阻止IE ... :-(
是的,确实IE浏览器是一系列糟糕的浏览器,存在许多问题。
幸运的是,有人确实与盖茨/鲍尔默/纳德拉谈过。 Internet Explorer产品线已结束。换成了 Microsoft Edge。一个巨大的进步。他们似乎有一种新的精神,并且衷心地赞同并遵循网络标准。
见 CanIUse.com 网站,以查看哪些版本的浏览器支持HTML,CSS等功能。
在treetable中加载延迟对我来说真的很有帮助。
该 TreeTable
小部件被取代 TreeGrid
在Vaadin 8.这个新的小部件共享技术在惊人的新 Grid
小部件。
另请参见手册页 分层数据。它讨论了后端的延迟加载数据。
这是 关于延迟加载的文章 在Alejandro Duarte的Vaadin 8中。
ICEPush附加组件,完美地完成其工作。但是,过了一段时间它在控制台中给了我异常。(https://vaadin.com/forum#!/thread/234493/4528542)
推技术 现在,Vaadin支持内置功能。令人惊讶的是,基本上你需要做的就是添加一个 @Push
您的应用程序的注释。
Vaadin中的Push实现基于流行,强大且经过充分验证的库, 大气层。
参见手册页, 服务器推送。
请注意,Push技术近年来已经有了显着改善,尤其是 的WebSocket。新的 HTTP / 2 标准进一步推进了进步。请务必使用更高版本的Web容器,如Tomcat和Vaadin,以及Web浏览器。
如果我在浏览器中执行任何操作。它反映在另一个浏览器中(应用程序的另一个实例。)http://dev.vaadin.com/ticket/10208)
请参阅更新 那张票。似乎不是问题。
看起来像在页面中传递:new Notification(message).show(ui.getPage())解决问题...
上下文菜单插件:易于实现且非常棒。但是,在慢速网络上多次右键单击时,我会例外。 https://vaadin.com/forum#!/thread/119996/4455717
我不能说这个,除非说:
- 有很多讨论 那个帖子。
- 该组件现已作为Vaadin框架的一部分进行了整合。
我建议再试一次。 (我还没用过。)
恼人的异常消息。有什么需要在UI上显示它?
不确定你的意思。
如果您引用Java异常,我不确定如果应用程序对该用户有错误,您还希望发生什么。
如果您提到会话通信问题,您应该知道最新版本的Vaadin会更积极地尝试维护和重新建立问题连接。
我目前找不到链接,但已记录在案。也许在他们的博客中。
我的Vaadin服务器在英国,API服务器在美国,这是通信问题的原因吗?
当然,通过互联网维护会话可能会有问题。
我可以告诉你的是,我在威斯康星州的一个colo中部署了我的服务器,并且用户在佛罗里达州,加拿大西雅图甚至香港成功运行,使用Push来每分钟更新显示的数据。
如果您的网络不可靠,那么Vaadin等积极“健谈”的架构就不合适了。
这是很多问题。我没有答案,但对你有一些见解。
我已经开发了一个并且看到了在Vaadin 6中开发的三个Web应用程序。所有失败,原因各不相同,但我可以与您分享我的一些不起眼的见解:
- 一些Vaadin行为(至少6.x)很难定制,例如会话到期。
- 结果HTML非常繁重,也很难定制。通常我的团队不可能达到理想的视觉效果。
- 我发现Vaadin的设计很差(大量的铸造/使用
Object
而不是泛型)。在我的拙见中,源代码也不是高质量的。
- 由于缺陷和缺乏真实示例,内置小部件有时难以使用。
- 浏览器之间的可移植性是一个神话(尤其是IE,但你已经发现了)
- 简单的Vaadin应用程序可占用大量CPU资源
还要记住Vaadin以错误的方式使用(不是 单页应用)成为一场噩梦 - 但不是框架本身的错。这同样适用于任何其他工具。