簡體   English   中英

如何通過Maven項目在JBoss上運行Talend Job?

[英]How to run a Talend Job on JBoss from a Maven project?

Talend Open Studio for Data Integration 5.3.1 (在Windows 7上)導出作業之后,如何從Eclipse Maven Project中運行Talend作業? 特定於作業的依賴項是什么,全局性的依賴項是什么?

我的Eclipse項目正在JBoss 5.1.0.GA上運行。 它為接收的每種文件運行一個Talend Job,並為每種文件執行ETL處理。 我正在通過執行“導出作業-自主作業”從Talend導出每個作業,並且正在將JAR文件添加為Maven項目的依賴項。 但是我不認為我可以在服務器上運行作業。

看來您做得不錯,您所需要的只是創建正確的pom.xml,其中將jar和context.properties包含到您的項目中。 我正在創建一個包含必要文件的工件。 這是我pom的一個示例:

    <copy todir="${project.build.outputDirectory}">
       <fileset dir="${basedir}/My_Job_Main/" includes="*.jar"/>
    </copy>
    <jar destfile="${project.build.outputDirectory}/myJar.jar">
      <zipfileset dir="${basedir}/My_Job_Main/" 
         includes="**/my_job_main/**"
         excludes="**/src/**,**/items/**"/>
    </jar>
    <zip destfile="${basedir}/target/my.artifact.id-1.0-SNAPSHOT.jar">
       <zipgroupfileset dir="${project.build.outputDirectory}" includes="*.jar"/>
    </zip>

而不是將此工件添加為對您的ear文件的依賴項。

在將要運行此作業的類中,只需導入Job類並使用以下命令執行函數:

My_Job_Main job = new My_Job_Main();
job.runJobInTOS(params);//params -> is the String array of context variables

解決方案2:

但是這種解決方案是我不喜歡的。 因此,我建議您在導出作業時導出作業並動態加載它們,而無需使用Maven進行部署。 它使您可以靈活地更改作業,而無需重新啟動服務器。

這是將動態加載作業jar文件並執行它們的代碼示例:

URL [] urls = new URL[length];

File jar = new File("path_to_jo_jar_file");
urls[0] = jar.toURI().toURL();

String params[] = new String[length];
params[0] = "--context=Default";
params[1] = "--context_param";
params[2] = "paramName=paramValue";

Class<?>[] params_type = new Class[]{String[].class};
URLClassLoader child = new URLClassLoader(urls , this.getClass().getClassLoader()); 
Class classToLoad = Class.forName( "my_job_main.My_Job_Main", true, child);
Method method = classToLoad.getDeclaredMethod ("runJobInTOS", params_type);
method.setAccessible(true);
Object instance = classToLoad.newInstance();
method.invoke(instance, new Object[]{ args } );

希望這可以幫助。 如果您還有其他問題,請發表評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM