Текущее время: Вт, июл 22 2025, 02:23

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ! Прежде чем задавать вопрос, ознакомьтесь со ссылками ниже:

Вопросы по отличиям версий SAP, Add-On, EHP - сюда
Вопросы по SAP Front End (SAPlogon, SAPgui, guiXT и т.д.) - сюда
Вопросы по LSMW - сюда
Вопросы по архивации в SAP - сюда
Вопросы по SAP GRC - сюда
Вопросы по SAP Business Workplace (почте SAP) и SAP Office - сюда
Вопросы по miniSAP (SAP mini basis) - сюда
Вопросы по SAP HANA - сюда
Вопросы по лицензированию продуктов SAP - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Stateful Web Service from FM
СообщениеДобавлено: Пт, июн 03 2011, 10:57 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Добрый день!

Есть ФМ SRT_TESTS_FB_SUM. Он в некотором роде - "stateful". Т.е. с каждым вызовом он увеличивает и возвращает глобальную переменную группы функций.
Из этого модуля я создал веб-сервис. В SE80, в конфигурации поставили Stateful Communication = Stateful.
Пытаюсь вызывать его с помощью SOAP UI. Делаю первый вызов, копирую set-cookie http-заголовок (MYSAPSSO2) из ответа и вставляю в Cookie во второй вызов. Но возвращаемое значение не увеличивается. Что я ему послал, то и получаю обратно. Вызов идет без удержания сессии.

set-cookie первого ответа:
MYSAPSSO2=Aj...(много символов)...Du; path=/; domain=.<host>

Подозреваю, что MYSAPSSO2 - это не то, что мне нужно ... Оно используется только для логина. Это не идентификатор сессии.
Возможно я должен получать такие cookies: sap-appcontext,sap-contextid,JSESSIONID? Но их нет в ответе.

В WSDL файле есть такие строки:
<sapsession:Session xmlns:sapsession="http://www.sap.com/webas/630/soap/features/session/">
<sapsession:enableSession>false</sapsession:enableSession>
</sapsession:Session>

Может кто делал подобное? Как получить вызов с удержанием сессии?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stateful Web Service from FM
СообщениеДобавлено: Пн, июн 06 2011, 14:19 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Есть мысль, что можно использовать http request handlers в SICF. Но я не силен в этой теме. Ставлю в сервис свой обработчик, но он походу не используется. Точка прерывания в нем не срабатывает. Наверно что-то не так делаю.

http://help.sap.com/saphelp_nw70/helpda ... ameset.htm
"SAP provides HTTP request handlers for standard functions (such as BSP, SOAP and IDoc). You can adapt these to your personal requirements. By defining your own HTTP request handlers, you can use the ICF more flexibly for your applications."


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stateful Web Service from FM
СообщениеДобавлено: Пн, июн 06 2011, 14:59 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 20 2008, 12:22
Сообщения: 9
Damager написал(а):
Есть мысль, что можно использовать http request handlers в SICF. Но я не силен в этой теме. Ставлю в сервис свой обработчик, но он походу не используется. Точка прерывания в нем не срабатывает. Наверно что-то не так делаю.


А вы где обработчик проставляли? Я вот сейчас создал новый сервис в SICF, назначил ему обработчик (z-класс, реализующий интерфейс IF_HTTP_EXTENSION), код метода handle_request:
Code:
method IF_HTTP_EXTENSION~HANDLE_REQUEST.
  data: lv_result type i,
        lv_text type string.

  server->set_session_stateful( ).


  call function 'SRT_TESTS_FB_SUM'
    importing
      result              = lv_result
    exceptions
      result_is_negative  = 1
      others              = 9.

  lv_text = lv_result.
  server->response->set_cdata( lv_text ).
endmethod.

Цифра на страничке, после обновления, растет.

_________________
Жаль, что завтра это не то послезавтра, что было ещё вчера.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stateful Web Service from FM
СообщениеДобавлено: Пн, июн 06 2011, 15:13 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Я вставлял обработчик в сервисе, который создался при создании веб-сервиса из ФМ.

А если создать руками, то все ок, это я проверял. Но это получается не веб-сервис, а просто http вызов. Возможно он нам тоже подойдет, пока не знаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stateful Web Service from FM
СообщениеДобавлено: Вт, июн 07 2011, 10:16 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 03 2005, 10:16
Сообщения: 74
Интуиция меня не подвела. Решение и правда было в http-обработчиках.

Обработчик моего сервиса в SICF был CL_SOAP_HTTP_EXTENSION in /default_host/sap/bc/srt/rfc. Я так и не понял как его использовать для удержания сессии.

Но я понял, как это сделать для обработчика CL_HTTP_EXT_SOAPHANDLER_RFC.
В нем используется переменная session_mode из http-запроса:
Code:
server->request->get_form_field( name = 'session_mode' )


Необходимо использовать session_mode = 1 в первом вызове веб-сервиса. Сессия откроется.
Code:
If session_mode = 1.
server->stateful = server->co_enabled.
server->response->set_cookie ... 'sap-contextid' ...


В последнем вызове добавляю session_mode = 2. Сессия закрывается (проверено в SM04).
Code:
If session_mode = 2.
server->stateful = server->co_disabled.
server->response->delete_cookie_at_client ... 'sap-contextid' ...


Я сделал копию - ZCL_HTTP_EXT_SOAPHANDLER_RFC. И добавил возможность чтения параметра session_mode из http-заголовка, мне так удобнее.
Code:
server->request->get_header_field( 'session_mode' )


В SICF я создал сервис /default_host/zmysoap и добавил туда мой Z обработчик. В wsdl-файле изменил soap:address на http://<host:port>/mysoap. Все работает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB