Java - шаблон проектирования, управление сеансами для клиента веб-службы - PullRequest
0 голосов
/ 16 ноября 2010

Я пишу клиентскую библиотеку для веб-службы с использованием CXF.Служба использует изменяемый ключ для управления сеансами и, при необходимости, позволяет поддерживать сеанс в рабочем состоянии.

Я создал клиент Client и хочу предоставить возможность использования библиотеки для выбора типа управления сеансом, т. Е. Либо менеджера, который просто управляет ключами, но не пытается сохранить работоспособность, именеджер, который управляет ключами и поддерживает сессию.

Я думал о наличии поля SessionManager в классе Client (с классом SimpleSessionManager и классом KeepAliveSessionManager), но, чтобы поддержать сеанс, KeepAliveSessionMangerдолжен был бы вызвать метод класса Client.Это означало бы, что класс Client имеет ссылку на класс SessionManager, а класс SessionManager будет иметь ссылку на класс Client - что, очевидно, является не элегантным дизайном.

предложить шаблон проектирования (или альтернативную реализацию), который позволил бы мне реализовать эти функции «лучше»?

Cheers,

Pete

1 Ответ

0 голосов
/ 19 января 2011

Вы можете использовать SessionManager в качестве фабрики для «клиентов», которые будут возвращать интерфейс для клиента.Клиенту не нужно будет «знать» SessionManager.И если SessionMaAnager был KeepAliveSessionMaanger, он внутренне поддерживал бы сессию.

Примерно так:

SessionManager sm = new KeepAliveSessionManager(int keepAliveTimeout);

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

SessionManager внутренне использует поток (или что-то еще) и клиент для хранениясеанс жив.Клиент никогда не «знает» о SessionManager ..

Кстати, я думаю в .NET, но он должен переводиться в Java ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...