Java - 设计模式,Web服务客户端的会话管理
问题描述:
我正在为使用CXF的Web服务编写客户端库。该服务使用可变的密钥来管理会话,并且可以选择允许会话保持活动状态。Java - 设计模式,Web服务客户端的会话管理
我已经构建了一个客户端Client
,我想提供使用库的选择他们的会话管理类型的能力,即只管理密钥但不尝试保持活动的管理器和管理密钥的管理器并保持会话活着。
我曾想过有为了保持会话活着的Client
类SessionManager
场(与SimpleSessionManager
类和KeepAliveSessionManager
类),但中,KeepAliveSessionManger
将不得不调用Client
类的方法。这意味着Client
课程有SessionManager
课程的参考,而SessionManager
课程将参考Client
课程 - 这显然是一个不雅的设计。
您能否提出一种设计模式(或altnernate实现),让我以更好的方式实现这些功能?
干杯,
皮特
答
你可以使用SessionManager的一个工厂“客户”,将返回一个接口的客户端。 客户端不需要“知道”SessionManager。如果SessionMaAnager是一个KeepAliveSessionMaanger,它会在内部保持会话活着。
事情是这样的:
SessionManager sm = new KeepAliveSessionManager(int keepAliveTimeout);
IClient client = sm.GetClient();
client.InvokeSomeMethod();
的SessionManager内部使用一个线程(或东西)和客户保持会话活着。客户端从不“知道”SessionManager ..
顺便说一句,我在.NET的思想,但它应该转化为Java ...