日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java EE 7 Batch中传递属性/参数的2种方式

發(fā)布時(shí)間:2023/12/3 java 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java EE 7 Batch中传递属性/参数的2种方式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于Java EE 7批處理工具,有兩種將屬性/參數(shù)傳遞給塊和批處理的方法。 本快速指南向您展示了兩種方式,在開(kāi)發(fā)批處理Java EE 7方式時(shí)可能會(huì)經(jīng)常使用它們。

1.運(yùn)行前預(yù)定義的屬性/參數(shù)

預(yù)定義屬性是您在部署應(yīng)用程序之前定義的屬性(名稱(chēng)/值對(duì))。 換句話(huà)說(shuō),它是固定的和靜態(tài)的,從不動(dòng)態(tài)的,并且在您檢索它們時(shí)值將始終保持不變。 這是通過(guò)作業(yè)描述符XML文件完成的,該文件位于例如META-INF / batch-jobs / demo-job.xml中 。 例如:

<?xml version="1.0" encoding="UTF-8"?> <job id="demoJob" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0"><properties><property name="staticParamName1" value="staticParamValue1" /><property name="staticParamName2" value="staticParamValue2" /></properties><!-- Then, the rest of the steps definition --> </job>

它要做的就是將每個(gè)預(yù)定義的屬性放在<properties />標(biāo)記內(nèi)。 部署應(yīng)用程序后,這些屬性將對(duì)運(yùn)行時(shí)XML文件中定義的ItemReader,ItemProcessor,ItemWriter和Batchlet的對(duì)象可用。

這是一個(gè)有關(guān)在運(yùn)行時(shí)如何檢索預(yù)定義屬性/參數(shù)的示例。

@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 }

不利的一面是,屬性值在整個(gè)運(yùn)行期間始終保持不變。 如果需要將動(dòng)態(tài)值傳遞給批處理步驟對(duì)象,請(qǐng)繼續(xù)閱讀...

2.在運(yùn)行時(shí)動(dòng)態(tài)傳遞屬性/參數(shù)

在批處理運(yùn)行期間,有時(shí)需要?jiǎng)討B(tài)屬性/參數(shù)值。 為此,首先必須定義屬性/參數(shù),并將作業(yè)操作員傳遞給批處理作業(yè)。

例如,我有一個(gè)JobOperator (Singleton EJB),它將通過(guò)方法runBatchJob()啟動(dòng)批處理作業(yè),該方法將兩個(gè)動(dòng)態(tài)屬性/參數(shù)傳遞給批處理作業(yè)對(duì)象:

@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 );} }

一旦應(yīng)用程序服務(wù)器運(yùn)行了作業(yè),該作業(yè)中涉及的對(duì)象(ItemReader,ItemProcessor,ItemsWriter和Batchlet)就可以檢索在runtimeParameters中設(shè)置的屬性,但是使用另一種方式。 這是在ItemReader中執(zhí)行操作的方式(其余的批處理作業(yè)步驟對(duì)象也是如此):

@Dependent @Named( "DemoReader" ) public class DemoReader extends AbstractItemReader {@Injectprivate JobContext jobCtx;@Overridepublic void open( Serializable ckpt ) throws Exception {// Here's 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 }

注意區(qū)別,不是從JobContext獲取屬性,而是必須通過(guò)傳遞Job Context的執(zhí)行ID從BatchRuntime的JobOperator獲取動(dòng)態(tài)運(yùn)行時(shí)定義的屬性。

希望這是有用的。

翻譯自: https://www.javacodegeeks.com/2014/09/2-ways-of-passing-properties-parameters-in-java-ee-7-batch.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Java EE 7 Batch中传递属性/参数的2种方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。