Я нахожусь в SAP NetWeaver 7.3 EHP 1 (сертифицирован JEE5), и я создал скелет веб-службы для существующего WSDL. Все методы в этом веб-сервисе не блокируются и поэтому аннотируются с помощью @Oneway
. Сама услуга работает отлично.JAX-WS - внедрить WebServiceContext в @WebService, который имеет только методы @Oneway
Мне также нужно получить доступ к инъекционному WebServiceContext
, и вот где начинается проблема. Я могу вставить контекст просто отлично, но каждый вызов для него просто заканчивается в NPE для конкретного сервера или ISE. Я несколько понимаю, что, поскольку неблокирующий вызов выполняется асинхронно с помощью реализации JAX-WS SAP. Однако я попытался проверить это поведение, посмотрев спецификацию JAX-WS. Теперь я либо слепой, либо в спецификации конкретно не говорится, что WebServiceContext
не должен использоваться в неблокирующих веб-методах. Фактически, во всей главе 5.3 последней версии спецификации, @Oneway
не упоминается один раз. Основное описание
интерфейс javax.xml.ws.WebServiceContext делает возможным для объекта реализации конечных точек и потенциально любых других объектов, которые разделяют его контекст выполнения для доступа к информации, имеющей отношение к запрос обслуживается. Результат вызова любых методов в WebServiceContext компонента вне вызова одного из его методов веб-службы не определен. Реализация СЛЕДУЕТ бросать java.lang- .IllegalStateException, если он обнаруживает такое использование.
Я думаю, что это определение «запрос обслуживается». Во время асинхронной обработки операции SOAP HTTP-запрос уже завершен. Но опять же, я не получаю доступ к контексту «вне вызова одного, если его методы веб-службы». Я смущен ...
Вы знаете, что кто-нибудь из вас знает, разрешено ли мне получать доступ к WebServiceContext
в неблокируемом веб-методе? Благодаря!