首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java设计模式、Web服务客户端的会话管理

问Java设计模式、Web服务客户端的会话管理
EN

Stack Overflow用户
提问于 2010-11-16 19:54:13
回答 1查看 1.9K关注 0票数 0

我正在使用CXF为web服务编写一个客户端库。该服务使用可变密钥来管理会话,并允许会话保持活动状态。

我已经构建了一个客户端Client,并且我想为库的使用者提供选择其会话管理类型的能力,即,一个管理器只管理密钥但不试图保持活动状态,另一个管理器管理密钥并保持会话活动状态。

我曾经想过在Client类中有一个SessionManager字段(有一个SimpleSessionManager类和一个KeepAliveSessionManager类),但是为了使会话保持活动状态,KeepAliveSessionManger必须调用Client类的方法。这意味着Client类引用了SessionManager类,而SessionManager类引用了Client类-这显然是一种不优雅的设计。

你能推荐一个设计模式(或altnernate实现),让我以一种“更好”的方式实现这些功能吗?

干杯,

皮特

EN

回答 1

Stack Overflow用户

发布于 2011-01-19 20:41:20

您可以使用SessionManager作为“客户端”的工厂,它将为客户端返回一个接口。客户端不需要“知道”SessionManager。如果SessionMaAnager是一个KeepAliveSessionMaanger,它将在内部保持会话活动。

如下所示:

代码语言:javascript
复制
SessionManager sm = new KeepAliveSessionManager(int keepAliveTimeout);

IClient client = sm.GetClient();
client.InvokeSomeMethod();

SessionManager在内部使用线程(或其他东西)和客户端来保持会话活动。客户端永远不会“知道”SessionManager..

顺便说一句,我在想.NET,但它应该翻译成java…

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4193829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档