我目前正在使用 JAX-WS 编写一组新的 Web 服务,但在确定验证输入的最佳方式时遇到了困难。我可以在我的实现类中进行一些验证,但一些输入错误会静默失败。例如,数字元素中的字符数据将导致 JAXB 对象中的 Integer 为空。
这些是我遇到的设计。
@SchemaValidation
我可以将此注释添加到端点类,JAX-WS 将负责验证。这在 tomcat 本地工作,但有人担心它不会在某些服务器上工作。我的主要抱怨是我必须放弃对错误在响应中的输出方式的控制。所有输入都作为字符串
我讨厌这种方法,但我见过其他所有输入都定义为字符串的 Web 服务。这将捕获数字元素中字符数据的情况,因为我可以在调用 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>
也许我问得太多了,但我想我会看看我是否错过了什么。TIA。