В настоящее время я пишу новый набор веб-сервисов с использованием JAX-WS, но у меня возникают трудности с выбором наилучшего способа проверки входных данных. Я могу сделать некоторые проверки в моих классах реализации, но некоторые входные ошибки терпят неудачу. Например, символьные данные в числовом элементе приведут к нулевому целу в объекте JAXB.
Это те конструкции, с которыми я столкнулся.
-
@SchemaValidation
Я мог бы добавить эту аннотацию к классу конечных точек, и JAX-WS позаботится о проверке. Это работало локально в tomcat, но есть опасения, что он не будет работать на некоторых серверах. Моя главная проблема заключается в том, что я должен сдать контроль над тем, как ошибки выводятся в ответе. -
Все входы как строки
Я ненавижу этот подход, но я видел другие веб-службы, где все входы определяются как строки. Это уловило бы случайные данные в числовом элементе, поскольку я мог бы проверить его, где я называю наш API, хотя вы все равно пропустите любые некорректно названные xml-элементы.
Я действительно хочу, чтобы ошибки возвращались так же, как ошибки API, а не как мыльная ошибка. Есть идеи? Я видел, как несколько сайтов говорили о перехвате запроса с помощью своего рода фильтра. Не уверен, как это будет работать с различными ответами для разных операций.
например.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<myOperationResponse>
<return>
<success>false</success>
<errors>
<error>
<code>UNIQUECODE</code>
<message>Message text</message>
</error>
</errors>
</return>
</myOperationResponse>
</S:Body>
</S:Envelope>
Возможно, я слишком много спрашиваю, но думал, что посмотрю, пропустил ли я что-нибудь. ТИА.