【问题标题】:pass a file name as a job parameter while executing a spring batch job with json api在使用 json api 执行 spring 批处理作业时将文件名作为作业参数传递
【发布时间】:2016-04-21 15:08:15
【问题描述】:

请问在使用 json api 执行 spring 批处理作业时如何将文件名作为作业参数传递?

Map<String, String> map = new HashMap<String, String>();

            map.put("jobparameters", "filename="  + UPLOAD_LOCATION + uploadedFile.getFileName() + ".csv");

            RestTemplate rstTpl = new RestTemplate();

            String result = rstTpl.postForObject(url, map, String.class);

并从我的工作中访问该文件,例如

<bean id="edivJobFile" class="org.springframework.core.io.FileSystemResource"
    scope="step">
    <constructor-arg value="#{jobParameters[filename]}" />
</bean>

【问题讨论】:

  • 能否请您解释并展示json api接收参数并开始工作的部分的代码?

标签: spring spring-batch spring-batch-admin


【解决方案1】:

我后来发现用于 POST(启动作业)的 Spring Batch JSON api 允许将作业参数作为 POST 请求参数(http://docs.spring.io/spring-batch-admin/reference/json.html)传递,例如 jobparameters=filename=myfile.csv, batchCode=001

jobparameters=filename=myfile.csv, batchCode=001

所以我后来做了:

MultiValueMap<String, String> mvm = new LinkedMultiValueMap<String, String>();

String fileNameParam = "filename="  +  UPLOAD_LOCATION + "/" + uploadedFile.getFileName();

String batchCodeParaam = "batchCode=" + uploadedFile.getBatchCode();
String companyCodeParam =  "companyCode=" + companyCode;


mvm.add("jobParameters", fileNameParam + "," + batchCodeParaam + "," + companyCodeParam);

RestTemplate rstTpl = new RestTemplate();

String result = rstTpl.postForObject(url, mvm, String.class);

它奏效了。 @Michael Pralow,spring api由spring batch admin公开,作为监视和启动作业的选项。 谢谢

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2019-08-01
    • 2013-10-21
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多