用Spring Web Flow和Terracotta搭建Web应用

时间:2007-06-14 01:22:07  来源:站长资讯收集整理  作者:佚名

  现在我们已经看过了如何使用Spring Web Flow来实现一个有状态web应用。接下来让我们更高兴的看如何给我们的示例应用启用高可用性和故障恢复,如何使用Terracotta for Spring进行集群来提供透明容错性和在节点间共享状态。

  听上去很难? 你会发现这实际上很简单。

  声明式配置

  Sellitem示例应用使用一个Sale类的实例来保存当前销售的会话数据;同样Spring Web Flow executor repository也使用HTTP session 来保存所有的会话数据。

  要使用Terracotta for Spring,我们需要确保为给定的web应用启用了HTTP session集群,包括所有可能被保存在 HTTP session中(或者能被保存在HTTP session中的实例引用)的类,以便于检测。这里是Terracotta for Spring的tc-config.xml配置文件的一个例子:

  

  

  name="swf-sellitem">

  true

  org.springframework.webflow.samples.sellitem.Sale

  这里我们为swf-sellitem WAR文件启用了HTTP session集群并配置了Sale类。

  就是这样,我们已经做了很多了。

  启用Terracotta

  我们唯一需要做的就是在应用中启用Terracotta for Spring运行时。这可以通过修改Tomcat web服务器的启动脚本并在脚本最前面加入下面的环境变量完成:

  set JAVA_OPTS=-Xbootclasspath/p:"%DSO_BOOT_JAR%"

  set JAVA_OPTS=%JAVA_OPTS% -Dtc.install-root="%TC_INSTALL_DIR%"

  set JAVA_OPTS=%JAVA_OPTS% -Dtc.config="%LOCAL_DIR%\tc-config.xml"

  这里面:

  DSO_BOOT_JAR环境变量指向jar的根目录(能在Terracotta for Spring安装的根目录的common/lib/dso-boot下找到)。

  TC_INSTALL_DIR环境变量指向Terracotta for Spring安装的根目录。

  LOCAL_DIR指向包含tc-config.xml的目录.。

  Sellitem应用预配置了Terracotta for Spring集群的代码可以在下面的'Resources'章节找到。也包括了开箱即用的Tomcat集群配置。

  注解:Spring应用上下文中的集群bean可以在服务(bean)级别配置,并依赖于Terracotta for Spring的 auto-include检测机制.例如,大多数情况下我们不需要关心引入哪个类,而只需要在tc-config.xml文件中定义希望集群的bean的名称。

文章评论

共有 位CH网友发表了评论 查看完整内容