我们将深入洞穴,继续跟进 Wesley Hales 优秀的视频,介绍将移动Web优化的 RichFaces TweetStream 应用部署到红帽的新免费PaaS服务 OpenShift Express,其中包含底层的 JBoss AS 7

已涵盖的内容

关于OpenShift和移动Web优化的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]


返回顶部