一个春季批处理作业准备的文件不能被其他人删除。

时间:2019-05-16 23:49:03

标签: spring-batch

我有一个要求,我必须使用一个作业准备一个文件,而每天运行一次的另一个作业会将文件发送到外部系统并从该位置删除/移动。当此作业尝试删除/移动文件时,将无法访问该文件。

创建文件时,我尝试将可写设置为true。在不同的时间运行作业(一次运行一个作业)。尝试将“删除”也添加到同一作业中。没事。 我正在使用 'depends': ['base', 'res', 'sale_management', 'account', 'account_payment'], #'depends': ['base', 'sale_management', 'account', 'account_payment'], 。也尝试过 #'depends': ['base', 'res', 'sale_management', 'account', 'account_payment'], 'depends': ['base', 'sale_management', 'account', 'account_payment'],

我怀疑第一份工作没有分配适当的权限,但是不知道如何在春季批处理中设置权限

2 个答案:

答案 0 :(得分:0)

这些作业是否由同一用户运行?即相同的用户和权限?

还有什么实际的错误消息?它说权限被拒绝了吗?如果是这样,则可能是操作系统限制而不是Spring Batch / Java限制。

一种更简单的解决方案是在第一个作业中添加一个步骤,以将文件发送到该作业中,然后删除仅传输文件的作业。

答案 1 :(得分:0)

回答我自己的问题。希望它可以帮助某人。 问题是最后一个ItemWriter拥有资源,因为我正在使用复合编写器。在使用CompositeWriter beforeStep时,afterStep方法被“隐藏”。您必须显式地调用它们。我选择了编写自定义编写器的方法,该编写器将显式调用writer.close()。

添加afterStep方法并调用super.close()也应该可行。虽然我有尝试。