Я считаю, что проблема в том, что ваш вход SOAP использует префикс пространства имен для входного элемента eventId
.
Попробуйте это:
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eve="http://ws.udc.es/event">
<x:Header/>
<x:Body>
<eve:findEvent>
<eventId>0</eventId>
</eve:findEvent>
</x:Body>
я смог воссоздать с помощью следующего поставщика услуг в Jetty 9.4:
служба конечных точек интерфейса: реализация
package org.example.sampleservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(targetNamespace="http://ws.udc.es/event")
public interface SampleService {
@WebMethod(operationName = "findEvent")
public ServiceEventDto findEvent(@WebParam(name = "eventId") Long eventId) throws InstanceNotFoundException;
}
Услуги:
package org.example.sampleservice;
import javax.annotation.Resource;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
@WebService(endpointInterface = "org.example.sampleservice.SampleService", targetNamespace="http://ws.udc.es/event")
public class SampleServiceImpl implements SampleService {
@Resource
private WebServiceContext ctx;
@WebMethod(operationName = "findEvent")
public ServiceEventDto findEvent(@WebParam(name = "eventId") Long eventId) throws InstanceNotFoundException {
System.out.println("SampleServiceImpl: received eventId " + eventId);
return new ServiceEventDto();
}
}
Когда я использую свой оригинальный вход с <eve:eventId>0</eve:eventId>
я наблюдаю следующий вывод:
SampleServiceImpl: received eventId null
Когда я использую <eventId>0</eventId>
наблюдаю ожидаемый результат:
SampleServiceImpl: received eventId 0
Если, однако, вы как ожидается, примет <eve:eventId>
, вы также можете настроить @WebParam
, чтобы добавить targetNamespace
следующим образом:
@WebParam(name = "eventId", targetNamespace="http://ws.udc.es/event") Long eventId
Когда я изменить мой поставщик услуг таким образом, выходной сигнал не изменится и <eve:eventId>
больше не null
.
поэтому код имеет findInvite и inviteId и XML имеет findEvent и eventId – slipperyseal
@SlipperySeal Извините, я скопировал неправильный код, теперь я исправлю его. –