网站制作学校要的,做网站发布网,佛山网站建设改版,科学规划网页的做法是()对于Java EE 7批处理工具#xff0c;有两种将属性/参数传递给块和批处理的方法。 本快速指南向您展示了两种方式#xff0c;在开发批处理Java EE 7方式时可能会经常使用它们。 1.运行前预定义的属性/参数 预定义属性是您在部署应用程序之前定义的属性#xff08;名称/值对有两种将属性/参数传递给块和批处理的方法。 本快速指南向您展示了两种方式在开发批处理Java EE 7方式时可能会经常使用它们。 1.运行前预定义的属性/参数 预定义属性是您在部署应用程序之前定义的属性名称/值对。 换句话说它是固定的和静态的从不动态的并且在您检索它们时值将始终保持不变。 这是通过作业描述符XML文件完成的该文件位于例如META-INF / batch-jobs / demo-job.xml中 。 例如 ?xml version1.0 encodingUTF-8?
job iddemoJob xmlnshttp://xmlns.jcp.org/xml/ns/javaee version1.0propertiesproperty namestaticParamName1 valuestaticParamValue1 /property namestaticParamName2 valuestaticParamValue2 //properties!-- Then, the rest of the steps definition --
/job 它要做的就是将每个预定义的属性放在properties /标记内。 部署应用程序后这些属性将对运行时XML文件中定义的ItemReaderItemProcessorItemWriter和Batchlet的对象可用。 这是一个有关在运行时如何检索预定义属性/参数的示例。 Dependent
Named( DemoReader )
public class DemoReader extends AbstractItemReader {Injectprivate JobContext jobCtx;Overridepublic void open( Serializable ckpt ) throws Exception {// Retrieve the value of staticParamName1 defined in job descriptor XMLString staticParamValue1 jobCtx.getProperties().getProperty( staticParamName1 );// The rest of the implementation}// The rest of the overridden methods
} 不利的一面是属性值在整个运行期间始终保持不变。 如果需要将动态值传递给批处理步骤对象请继续阅读... 2.在运行时动态传递属性/参数 在批处理运行期间有时需要动态属性/参数值。 为此首先必须定义属性/参数并将作业操作员传递给批处理作业。 例如我有一个JobOperator Singleton EJB它将通过方法runBatchJob启动批处理作业该方法将两个动态属性/参数传递给批处理作业对象 Singleton
public class BatchJobOperator implements Serializable {public void runBatchJob() {Properties runtimeParameters new Properties();runtimeParameters.setProperty( dynamicPropertyName1, dynamicPropertyValue1 );runtimeParameters.setProperty( dynamicPropertyName2, dynamicPropertyValue2 );JobOperator jo BatchRuntime.getJobOperator();// Run the batch job with the runtimeParameters passedjo.start( name-of-job-xml-file-without-dot-xml, runtimeParameters );}
} 一旦应用程序服务器运行了作业该作业中涉及的对象ItemReaderItemProcessorItemsWriter和Batchlet就可以检索在runtimeParameters中设置的属性但是使用另一种方式。 这是在ItemReader中执行操作的方式其余的批处理作业步骤对象也是如此 Dependent
Named( DemoReader )
public class DemoReader extends AbstractItemReader {Injectprivate JobContext jobCtx;Overridepublic void open( Serializable ckpt ) throws Exception {// Heres how to retrieve dynamic runtime properties / parametersProperties runtimeParams BatchRuntime.getJobOperator().getParameters( jobCtx.getExecutionId() );String dynamicPropertyValue1 runtimeParams.getProperty( dynamicPropertyName1 );String dynamicPropertyValue2 runtimeParams.getProperty( dynamicPropertyName2 );// The rest of the implementation}// The rest of the overridden methods
} 注意区别不是从JobContext获取属性而是必须通过传递Job Context的执行ID从BatchRuntime的JobOperator获取动态运行时定义的属性。 希望这是有用的。 翻译自: https://www.javacodegeeks.com/2014/09/2-ways-of-passing-properties-parameters-in-java-ee-7-batch.html