我们将深入洞穴,继续跟进 Wesley Hales 优秀的视频,介绍将移动Web优化的 RichFaces TweetStream 应用部署到红帽的新免费PaaS服务 OpenShift Express,其中包含底层的 JBoss AS 7!
已涵盖的内容
关于OpenShift和移动Web优化的TweetStream应用已经有了很多报道。所以,我不会重复旧的内容。请查看以下博客和视频。
- JBoss & OpenShift 发布页面
- Wesley Hales 和我介绍 TweetStream 的视频
- 我关于 TweetStream 的博客,详细解释了更多内容
- Lukas 的博客,讲述了如何在 JBoss AS 7 上运行 tweetstream
- Wesley 的 4分钟到云的视频,介绍了 OpenShift Express 和 TweetStream
OpenShift Express 更新
RichFaces 团队在将我们的 RichFaces 展示应用 从 Google App Engine 迁移到 OpenShift Express 的过程中,我们很快就会准备好。OpenShift 相比 GAE 有许多优势,它是一个真正的Java EE容器,支持RichFaces推送,并且API限制较少。
像许多其他的免费PaaS服务一样,OpenShift Express确实存在一些限制,您需要考虑。对我们应用程序来说,最重要的是线程限制和JMS支持。请注意,当您升级到OpenShift Flex时,所有这些限制都会消失!
RichFaces Push 流程简化
当RichFaces 4.0.0.Final 发布时,我们的推送组件与JMS绑定。这提供了卓越的企业级消息传递功能,但遗憾的是需要一些设置才能使用。由于Express默认不提供JMS,我们需要做一些更改。因此,在4.1.0版本中,我们添加了一些选项!
从RichFaces 4.1.0.M1开始,RichFace Push可以从JMS解耦。只需设置一个上下文参数即可。
<context-param> <param-name>org.richfaces.push.jms.disable</param-name> <param-value>true</param-value> </context-param>
这将使推送使用内部消息队列。未来将寻找更多关于此的博客和文档。这也是我们计划在RichFaces Push中支持CDI事件的又一步。
Atmosphere 更新即将到来
另一个需要更改的是转向Atmosphere的快照版本。Atmosphere有一个错误,它会为每个请求创建一个新的线程 - 疼啊!由于OpenShift Express可用的线程有限,我们需要找到一种绕过此问题的方法。
幸运的是,这个问题在Atmosphere 0.8-SNAPSHOT分支中已得到修复。这个版本的Atmosphere预计将于8月发布,一旦发布,RichFaces将默认使用它(可能在4.1.0.M2版本中)。
现在 - 如果您正在开发自己的RichFaces推送应用程序并将其部署到Express,您将需要覆盖Atmosphere版本。在Maven中,这很简单,只需将以下内容添加到您的pom文件中
<dependency> <groupId>org.atmosphere</groupId> <artifactId>atmosphere-runtime</artifactId> <version>0.8-SNAPSHOT</version> </dependency>
Infinispan 缓存本地支持
正如一些链接博客中讨论的那样,TweetStream应用程序在幕后使用Infinispan来提供我们处理推文数据的缓存。Infinispan在集群模式下使用jGroups来提供高级通信支持。
这里的问题是伴随的线程问题。对于TweetStream来说,确保您使用的是Infinispan的LOCAL模式非常重要。最新的TweetStream源已更新为使用LOCAL缓存。
下一步是什么
现在我们已经讨论了需要利用OpenShift Express的更新,我鼓励您亲自尝试。源代码位于TweetStream git仓库中。只需按照readme中的说明来设置和构建它。然后按照Wesley的视频中的说明进行部署。
将有更多关于JBoss和OpenShift的博客和视频发布,请保持关注并查看JBoss和OpenShift页面的最新消息。
[OpenShift Express] [JBoss OpenShift 新闻] [OpenShift Twitter] [TweetStream git Repo] [RichFaces Twitter]