写点什么

了解 Seam 的嵌套对话和超时

  • 2008-01-17
  • 本文字数:812 字

    阅读完需:约 3 分钟

对 Web 应用开发人员来说,状态管理一直是一个挑战。对话应该在应用层而不是请求层来处理交互。Jacob Orshalick 以 Seam 的酒店预订示例应用为例,论述了 Seam 的对话模型,并解释了如何将嵌套对话运用于该示例。

Seam 的对话模型提供了一个简化方法来处理 continuations。如果你熟悉 continuation server 的概念,你就知道它们提供了包括无缝后退按钮处理和自动状态管理在内的功能。一个用户会话有很多 continuations,它们是执行过程中简单的状态快照,可在任何时候恢复。如果你对这个概念不熟悉,别担心,Seam 使其变得很简单。

这只是模型的一部分,Seam 还允许对话的嵌套:

嵌套对话提供了一个状态容器,它堆叠在最早的对话或外部对话的状态容器之上。任何在嵌套对话状态容器中设置的对象,都不影响可从父对话状态容器中访问的对象。这就允许每个嵌套对话能保持其自己独有的状态。

Orshalick 从定义嵌套对话到确保它被妥善地清空一路演示下来。他用 JBoss Developer Studio 来扩展 Seam 的酒店预订示例应用,生动地完成了嵌套对话的讲解。

Jacob Orshalick 不止澄清了嵌套对话,他还讨论了对话超时的话题:

对话超时似乎是一个普遍被误解的 Seam 概念。在 Seam 论坛上,我常常看见一些帖子宣称对话超时不起作用。实际上它工作得很正常,只不过你必须去理解它的语义。

Orshalick 用与嵌套对话相同的例子说明了,在处理多对话时,只有后台对话会受到对话超时的影响。照这样来说,只有会话本身超时时,前台对话才会超时。

Orshalick 最后总结到:

通过其简单的对话模型,Seam 提供了一个非常有吸引力的方法来管理状态。过去开发人员艰难处理的复杂问题,包括多窗口操作和后退按钮处理,都能处理得天衣无缝了。

查看英文原文 Understanding Seam Nested Conversations and Timeouts - - - - - -

译者简介: 王丽娟(Ivy Wang),一个快乐的程序员,持续从事 Java EE 中间件和 Java EE 企业应用的开发,关注软件架构技术。职业目标是成长为一名优秀的架构师。

2008-01-17 21:481288
用户头像

发布了 151 篇内容, 共 68.2 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

头条观察 | 元宇宙成为必然趋势的三种可能

CECBC

风口上的低代码:我们看到了这些变化与趋势

脑极体

架构实战营-模块六

瓜子葫芦侠

「架构实战营」

Android C++系列:Linux进程间通信(二)

轻口味

c++ android jni 11月日更

没有人比我更会使用集合!对,是dart中的集合

程序那些事

Java flutter dart 程序那些事 11月日更

Apache APISIX request_uri 变量控制不当,存在路径穿透风险公告(CVE-2021-43557)

API7.ai 技术团队

Apache 云原生 漏洞修复 Apache APISIX ingress-controller

译文 | Apache Pulsar 集群如何确保消息不丢

Apache Pulsar

Java 分布式 云原生 中间件 Apache Pulsar

如何使用find和locate 命令在Linux 中查找文件和目录?

Ethereal

Linux find locate

在线文本按列截取工具

入门小站

工具

搞定大厂算法面试之leetcode精讲6.深度优先&广度优先

全栈潇晨

算法面试 Leet Code

Flutter:如何在没有插件的情况下制作旋转动画

坚果

flutter 11月日更

博文推荐 | 基于 Pulsar 事务实现 Exactly-Once 语义

Apache Pulsar

Java 架构 云原生 中间件 Apache Pulsar

vue3 学习笔记 (三)——vue3 自定义指令

码仔

Vue3 自定义指令

JSRE中的多任务与多线程

编程江湖

html5 大前端

小谈C#异常

喵叔

11月日更

Prometheus Exporter (十)Ping Exporter

耳东@Erdong

Prometheus ping exporter 11月日更

复杂业务系统高扩展架构设计与实践

鲸品堂

构架

深入理解 volatile 关键字

编程江湖

volatile JAVA开发

《深入理解JVM虚拟机》读书笔记:第二章 Java内存区域与内存溢出异常

Joseph295

Hadoop 入门笔记—核心组件 YARN

编程江湖

大数据 hadoop

程序员如何应对职业天花板

石云升

职场天花板 职场经验 11月日更

【高并发】浅谈AQS中的CountDownLatch、Semaphore与CyclicBarrier

冰河

Java 并发编程 多线程 高并发 异步编程

linux 上查找包含特定文本的所有文件

入门小站

Linux

贪心算法:加油站 ⛽

空城机

算法 大前端 11月日更

[Pulsar] 消息生命历程(四)——Broker的消息处理

Zike Yang

Apache Pulsar 11月日更

JavaScript 数组展平方法: flat() 和 flatMap()

devpoint

11月日更 flat flatMap

架构原则

卢卡多多

架构 11月日更

docker vs docker-compose 解密

liuzhen007

11月日更

央视新闻联合百度智能云打造首个AI手语主播

百度大脑

人工智能

详解阿里开源分布式事务框架Seata

博文视点Broadview

云小课|打造企业数据“高内聚,低耦合”--试试GaussDB(DWS)逻辑集群,实现数据物理隔离

华为云开发者联盟

EI企业智能 数据仓库服务GaussDB(DWS) 逻辑集群

了解Seam的嵌套对话和超时_Java_Bryan Clauser_InfoQ精选文章