【发布时间】:2013-05-20 00:32:51
【问题描述】:
我正在开发一个网络服务,无论如何,响应应该始终有效,我的意思是有效的格式。
这意味着,如果希望 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。
【问题讨论】:
-
你的是一个好方法,但我相信最好的方法是使用你的框架的能力。哪一个?有些将允许您创建处理
Throwable的异常映射器类(将它们转换为XML 消息)。其他人只会让你捕捉“业务异常”(即他们不会让你处理Throwable或Exception),在这种情况下,你是唯一的方法。 -
@acdcjunior 查看更新,谢谢 :)
-
这是一个 SOAP 服务,还是别的什么?
-
不是 SOAP,只是简单的 xml 请求/响应。
标签: java web-services model-view-controller spring-mvc