使用 OData2 中的响应发送自定义异常详细信息
Sending custom Exception Details with the Response in OData2
我在一个 Web 服务项目中工作,其中 olingo、odata2 与 Java 一起使用。我正在使用扩展 ODataJPAServiceFactory 的工厂 class。我想发送自定义状态代码和消息,以防模块中发生任何异常。但找不到如何在响应中发送自定义异常详细信息。如果有人遇到同样的问题或对此主题有一些了解,请分享您的宝贵意见。
我正在使用 REST API
嗨,我终于找到了解决方案:
在 Olingo V2 中,可以覆盖 "getCallback" 方法以使用自己的 ODataErrorCallback 实现。
可以在此处找到文档:http://olingo.staging.apache.org/doc/odata2/tutorials/debug.html#error-callback
这里有一个示例:org.apache.olingo.odata2.ref.processor.ScenarioServiceFactory
在我们的用例中,您可以(作为简单示例)将下面列出的代码添加到您的代码中(或者作为示例 JPA 参考场景工厂 (org.apache.olingo.odata2.jpa.processor.ref.web.JPAReferenceServiceFactory))。
@Override
public <T extends ODataCallback> T getCallback(Class<T> callbackInterface) {
if(callbackInterface.isAssignableFrom(ODataErrorCallback.class)) {
return (T) new MySampleErrorCallback();
}
return super.getCallback(callbackInterface);
}
private class MySampleErrorCallback implements ODataErrorCallback {
@Override
public ODataResponse handleError(ODataErrorContext context) throws ODataApplicationException {
LOG.error("Error...");
return EntityProvider.writeErrorDocument(context);
}
}
我在一个 Web 服务项目中工作,其中 olingo、odata2 与 Java 一起使用。我正在使用扩展 ODataJPAServiceFactory 的工厂 class。我想发送自定义状态代码和消息,以防模块中发生任何异常。但找不到如何在响应中发送自定义异常详细信息。如果有人遇到同样的问题或对此主题有一些了解,请分享您的宝贵意见。
我正在使用 REST API
嗨,我终于找到了解决方案:
在 Olingo V2 中,可以覆盖 "getCallback" 方法以使用自己的 ODataErrorCallback 实现。 可以在此处找到文档:http://olingo.staging.apache.org/doc/odata2/tutorials/debug.html#error-callback 这里有一个示例:org.apache.olingo.odata2.ref.processor.ScenarioServiceFactory
在我们的用例中,您可以(作为简单示例)将下面列出的代码添加到您的代码中(或者作为示例 JPA 参考场景工厂 (org.apache.olingo.odata2.jpa.processor.ref.web.JPAReferenceServiceFactory))。
@Override
public <T extends ODataCallback> T getCallback(Class<T> callbackInterface) {
if(callbackInterface.isAssignableFrom(ODataErrorCallback.class)) {
return (T) new MySampleErrorCallback();
}
return super.getCallback(callbackInterface);
}
private class MySampleErrorCallback implements ODataErrorCallback {
@Override
public ODataResponse handleError(ODataErrorContext context) throws ODataApplicationException {
LOG.error("Error...");
return EntityProvider.writeErrorDocument(context);
}
}