我正在开发一个网络服务,无论如何,响应应该总是有效的,我的意思是有效的格式。
这意味着,如果希望 Web 服务返回与特定 XSD 模式匹配的 XML,那么无论如何它都应该返回有效的 XML 文档。
到目前为止,我唯一的方法是做这样的事情(在控制器级别)
String xmlResponse = this.loadDefaultXML();
try {
xmlResponse = this.myCoolService.myCoolMethod();
} catch (Throwable t) {
xmlResponse = this.loadDefaultXML(String errorMessage)
} finally {
return xmlResponse
}
当然lpoadDefaultXML()
会在哪里加载一个 xml 文档,例如:
<?xml>
<result>Ouch, there was a problem</result>
并且loadDefaultXML(String errorMessage)
会做
<?xml>
<result>WHATEVER errorMessage contains</result>
当然,服务级别会处理正常的异常,不过,我觉得捕获Throwable
和使用try-catch-finally
是确保无论如何我都能控制的唯一方法,这样我就可以始终返回 XML。
有更好的想法或建议吗?
更新:
我正在使用 Spring MVC 3.2 和 JAXB 进行 xml 的编组/解组。这确实使用了 SOAP,我也没有为此使用 wsdl。