首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果从远程调用中传播错误,如何让Spring致命地退出?

如果从远程调用中传播错误,如何让Spring致命地退出?
EN

Stack Overflow用户
提问于 2010-08-27 12:25:43
回答 2查看 1.3K关注 0票数 1

我有一个应用程序,它通过Spring的RMI代理机制公开一个服务。存在这样一个问题:有时文件服务器上的“点”(它的JAR存储在上面)会导致调用将一个NoClassDefFoundError传播回调用方。

到目前为止还算公平。问题是,如果发生这种情况,我希望我的应用程序崩溃--也就是说,如果一个Error将被传播回调用方。

请注意,我在应用程序中已经有了一个UncaughtExceptionHandler,并且没有调用它(因为异常并不是真正的秘密)。

EN

Stack Overflow用户

发布于 2010-08-27 12:51:42

您可以做的是扩展[RmiServiceExporter][1]并处理invoke方法中的异常。这是可以做到的。

代码语言:javascript
复制
public class AutoFailRmiServiceExporter extends RmiProxyFactoryBean implements ApplicationContextAware {

    private ApplicationContext ac;
    @override
    public Object invoke(RemoteInvocation invocation,
                    Object targetObject)
             throws NoSuchMethodException,
                    IllegalAccessException,
                    InvocationTargetException {
        try {
          super.invoke(methodInvocation, target);
        } catch (NoClassDefFoundError e) {
          if {ac instanceof ConfigurableApplicationContext) {
            (ConfigurableApplicationContext)ac).close();
          else {
            //log error
          }
        }
    }
    //application context setter

}

然后,您将使用AutoFail版本的RmiServiceExporterwhen定义春季上下文中的rmi服务。

编辑:原始答案显示了一种在抛出异常时杀死客户端的方法。这是通过子类RmiProxyFactorty和重写doInvoke而不是RmiServiceExporter来实现的。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3584060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档