0

我已经浏览了几篇与类似问题相关的帖子,我正在通过 shell 脚本调用 spring 批处理应用程序并获取退出状态。成功执行后一切正常。ExitStatus 填充为 0。但是,如果存在任何数据库错误(创建数据库错误,我给了错误的数据库端口),则 ExitStatus 将返回为空。代码如下

我参考了以下帖子并以类似方式实施

如果抛出异常,则使用非零代码退出 spring-batch 作业

Spring批量返回自定义进程退出代码

外壳脚本:java -jar $JOBDIR/lib/feed*.jar

result=$?
    echo $result            

爪哇:

 public static void main(String[] args) {
       ConfigurableApplicationContext context 
                  =SpringApplication.run(App.class, args);

    int exitCode = SpringApplication.exit(context);
    System.out.print("Exit code is" + exitCode);
    System.exit(exitCode);
  }

    @Primary
@Bean(destroyMethod = "")
public DataSource dataSource() throws Exception {
      return BatchDataSource.create(url, user, password);
    }

如果出现数据库错误,它甚至还没有到达主方法 System.exit(exitCode) 的末尾;任何人都可以指导我有什么问题吗?

4

1 回答 1

0

如果有任何数据库错误(创建数据库错误,我给了错误的数据库端口),则 ExitStatus 将返回为空。

那是因为在那种情况下,你的工作根本没有被执行。根据您的配置,dataSourcebean 创建错误会阻止 Spring 应用程序上下文正确启动,甚至无法执行您的作业。

于 2019-09-19T09:00:45.487 回答