При условии, что XSD в WSDL не соблюдается при запуске веб-службы с JSE - PullRequest
0 голосов
/ 05 декабря 2018

Я запускаю простой веб-сервис вне контейнера JEE с:

Endpoint.publish(endpoint, ws);

На уровне кода веб-сервис состоит из интерфейса и конкретного класса.

ДляДля лучшего понимания того, как все работает, сначала я построил полный WSDL, а затем отразил конфигурацию в классах с обычной конкретной аннотацией.

Это интерфейс с предоставленным wsdl.

@WebService(
        serviceName="MyService",
        targetNamespace="http://mynamespace.it/",
        endpointInterface="it.iservices.MyService",
        wsdlLocation="META-INF/wsdl/MyService.wsdl"
)
public interface IPianteGraphicEndpoint {

    @WebMethod(operationName="info")
    @WebResult(name="details")
    public String info(
            @WebParam(name="token") String token) throws MyServiceException;    

}

Я не публикую реализующий класс, поскольку в нем нет ничего особенного.

Я указал это в wsdl для параметра:

 <xs:schema .....>
    <!-- Token -->
    <xs:simpleType name="token">
        <xs:restriction base="xs:string">
         <xs:length value="8"></xs:length>
        </xs:restriction>
    </xs:simpleType>
  .....
 </xs:schema>

Теперь я столкнулся с несколькими странностями:

  1. при вызове через SoapUI я могу пропустить все, что больше 8, и оно будет принято.Я ожидаю, что будет ошибка

  2. Я указал 'токен' как обязательный в wsdl, но не получаю никакой ошибки, если опускаю токен в вызове операции

  3. если я напишу какой-либо строковый символ в теге, я не получу ни одной ошибки со сформированным исключением, но вместо этого WS работает правильно.Однако остальная часть WSDL проверяется корректно. Если я изменяю имя операции на что-то другое, WS не запускается.

В целом, кажется, что в схеме s: полностьюигнорируется ...

...