Olá pessoal,
Estou usando CXF para publicação de alguns webservices aqui na empresa.
Eu possuo um schema chamado simpleTypes.xsd que define um tipo, como abaixo:
<simpleType name="marcaOtica">
<restriction base="string">
<pattern value="[0-9]{9}"/>
</restriction>
</simpleType>
E este tipo está sendo usado em um outro tipo definido dentro de um WSDL:
<xsd:complexType name="ws_dadosRecuperacaoSenhaBeneficiario">
<xsd:sequence>
<xsd:element name="marcaOtica" type="st:marcaOtica"/>
</xsd:sequence>
</xsd:complexType>
Este tipo de dado deveria recebe apenas números com tamanho 9, certo?
Acontece que está sendo permitdo que o serviço seja chamado como valores como “asd123asd” ou “2 2 5 5 4 1 1 5 7”.
E estes valores inválidos acabam gerando exceção no java quando preciso recuperar o valor como Long.
A minha dúvida é a seguinte: Isso é um problema do CXF? É alguma configuração que está faltando? Pode ser algum problema com JAXB ou alguma outra biblioteca? Talvez seja alguma configuração destas outras bibliotecas?
Eu não sei mais o que fazer. Para mim isso era transparente: você define as restrições e o schema valida. Pronto.
Alguém pode me dar uma ajuda?
Obrigado.