私は Web サービスを開発しています。何があっても、応答は常に有効でなければなりません。つまり、有効な形式で有効であることを意味します。
つまり、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>
もちろん、サービス レベルは通常の例外を処理しますが、それでも、常に XML を返すことができるように制御できるようにするには、例外をキャッチThrowable
して使用することが唯一の方法だと思います。try-catch-finally
より良いアイデアや提案はありますか?
アップデート:
XMLのマーシャリング/アンマーシャリングにSpring MVC 3.2とJAXBを使用しています。これはSOAPを使用しますが、これにはwsdlを使用していません。