Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法执行重试_Java_Loops - Fatal编程技术网

Java 方法执行重试

Java 方法执行重试,java,loops,Java,Loops,如果启动过程中发生错误,我想尝试重新运行我的应用程序 这是我的方法: while(true) { try { SpringApplication.run(StatisticsApplication.class, args); } catch (Exception e) { SpringApplication.run(StatisticsApplication.class, args); throw new RuntimeEx

如果启动过程中发生错误,我想尝试重新运行我的应用程序

这是我的方法:

while(true) {
    try {
        SpringApplication.run(StatisticsApplication.class, args);    
    } catch (Exception e) {
        SpringApplication.run(StatisticsApplication.class, args);
        throw new RuntimeException("Could not execute getConnection().", e);
    }
}

遗憾的是,它不能正常工作。如果应用程序启动失败,它将重新启动一次,然后退出。

我强烈建议不要使用您目前的方法,因为这种方法非常危险。

我建议您改用
Spring重试

此项目为Spring提供声明性重试支持 应用。用于弹簧批、弹簧集成、弹簧 对于ApacheHadoop(以及其他)

快速启动 示例:

@Configuration
@EnableRetry
public class Application {

    @Bean
    public Service service() {
        return new Service();
    }

}

@Service
class Service {
    @Retryable(RemoteAccessException.class)
    public void service() {
        // ... do something
    }
    @Recover
    public void recover(RemoteAccessException e) {
       // ... panic
    }
}
下面是关于如何使用Spring重试的另一个指南:


我强烈建议不要使用目前的方法,因为这种方法风险很大。

我建议您改用
Spring重试

此项目为Spring提供声明性重试支持 应用。用于弹簧批、弹簧集成、弹簧 对于ApacheHadoop(以及其他)

快速启动 示例:

@Configuration
@EnableRetry
public class Application {

    @Bean
    public Service service() {
        return new Service();
    }

}

@Service
class Service {
    @Retryable(RemoteAccessException.class)
    public void service() {
        // ... do something
    }
    @Recover
    public void recover(RemoteAccessException e) {
       // ... panic
    }
}
下面是关于如何使用Spring重试的另一个指南:


删除throw new RuntimeException语句。更妙的是,移除挡块中的所有内容。但这只会让你陷入一个无限循环。更好地实现一个限制我很好奇在启动应用程序的两次尝试之间会发生什么变化-如果代码和配置在循环的每次迭代之间保持不变,为什么结果会有任何不同?从这个代码片段可以看出,您正在尝试在启动期间连接到外部资源或服务器,并且可能会失败。请编辑您的问题并粘贴您试图连接的应用程序的代码好吗?删除throw new RuntimeException语句。更妙的是,移除挡块中的所有内容。但这只会让你陷入一个无限循环。更好地实现一个限制我很好奇在启动应用程序的两次尝试之间会发生什么变化-如果代码和配置在循环的每次迭代之间保持不变,为什么结果会有任何不同?从这个代码片段可以看出,您正在尝试在启动期间连接到外部资源或服务器,并且可能会失败。请编辑您的问题并粘贴您尝试连接的应用程序的代码,好吗?不客气。很高兴这有帮助。对于批处理和集成环境来说,这是一个非常有用的解决方案。不客气。很高兴这有帮助。对于批处理和集成上下文来说,这是一个非常有用的解决方案。