Заглушка, созданная с помощью Axis2, не может поддерживать сеанс между службой RESTful и клиентом. - PullRequest
0 голосов
/ 18 мая 2011

Я создал веб-сервис и включил управление сессиями на сервере и клиенте.Он работает FINE, пока я не включу REST на клиенте, добавив 3-ю строку кода в serviceStub.java.Управление сеансами перестает работать.

// session management 
_serviceClient.getOptions().setManageSession(true); 
_serviceClient.engageModule("addressing");

// enable REST
_serviceClient.getOptions().setProperty(Constants.Configuration.ENABLE_REST,Constants.VALUE_TRUE);

Опять же, если в комментарии последняя строка кода, управление сеансом снова включается.

Это ошибка или я что-то упустил?

Я использую:

  • Axis2 1.5.4
  • Tomcat 7.0.8

1 Ответ

1 голос
/ 25 мая 2011

Управление сеансами для веб-сервисов RESTful работает только на транспортном уровне, в отличие от веб-сервисов на основе мыла.

Таким образом, чтобы включить управление сеансами для веб-сервисов RESTful, необходимо выполнить следующее.

В коде Client заглушки используйте тот же код, что и выше, за исключением того, что строка о включении модуля адресации должна быть закомментирована или удалена, поскольку REST не поддерживает WS-адресацию)

// enable session management 
_serviceClient.getOptions().setManageSession(true); 

// enable REST
_serviceClient.getOptions().setProperty(Constants.Configuration.ENABLE_REST,Constants.VALUE_TRUE);

в services.xml в файле описания веб-службы добавьте ' transportsession ' в параметре области действия

<service name="MyService" scope="transportsession"
    class="myPackage.service.MyServiceClass">

Не забудьте повторно развернуть веб-службу.

Вот и все!

...