使用JSE启动Web Service时,不遵守WSDL中提供的XSD

时间:2018-12-05 09:27:19

标签: java web-services soap wsdl

我正在使用以下命令在JEE容器之外启动一个简单的Web服务:

Endpoint.publish(endpoint, ws);

在代码级别,Web服务由一个接口和一个具体的类组成。

为了更好地了解事物的工作方式,我首先构建了完整的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中将'token'指定为必填项,但如果在操作调用中省略令牌,则不会出现任何错误

  3. 如果我在标记中写入任何字符串字符,则不会收到任何格式错误的异常错误,而是WS正常运行。但是WSDL的其余部分都可以正确验证,如果我用其他名称更改操作名称,则WS无法启动。

总体而言,似乎完全忽略了s:schema中的内容...

0 个答案:

没有答案